You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Passkeys. People with no account in your identity provider can sign in
with a passkey. A deployment can also run with no identity provider at all.
An administrator adds someone with keera user add <email> --passkey and
sends them the one-time set-up link. Off unless KEERA_PASSKEYS=true. See
docs/sso.md#passkeys.
The directory is asked again every 15 minutes. Keera keeps the refresh
token from the sign-in, encrypted, and uses it while the person is active.
Someone removed from the directory loses their sessions and keera login
tokens within 15 minutes, not when they expire. Role changes apply in that
time too.
Teams are now projects. Every key is in a project. A new organisation
starts with one called default. A project can have a description.
Rename things. Operators rename organisations (keera org set --name).
Administrators rename projects (keera project set). Anyone renames their
own keys (keera key set). The panel has a pencil for each.
My clients. A new panel screen lists the clients that called with your
keys, and which key each used. Connect client sets up a new one, with
every model and router your key may use.
Simpler Claude subscription setup. An administrator issues a member a
subscription key, and keera connect claude-code --subscription on the
member's machine takes it over. The command respects managed settings that
already set the gateway's address. It also writes modelOverrides and turns
tool search back on, so Claude Code knows each model's context and features.
See docs/subscriptions.md.
Security
Where the gateway may connect.KEERA_UPSTREAM_DENY lists addresses the
gateway never sends a request to. By default: loopback, link-local (cloud
metadata) and AWS's IPv6 metadata address. DNS names are checked by the
address they resolve to. Redirects from backends and MCP servers are no
longer followed. See docs/install.md#where-the-gateway-may-connect.
A stored model or MCP credential only goes to the hosts it was entered for.
Moving a backend to a new host needs the key again, or --no-api-key.
The sign-in callback only works in the browser that started the sign-in.
An MCP key that may call only some tools no longer reaches the server's
resources, prompts, completions or tasks/list.
MCP tool calls now count against the key's rate limits, and against budgets
when the key has filters.
KEERA_METRICS_TOKEN may not be the same as the operator key.
Only an administrator issues keys. A member can no longer choose a key's
lifetime when rotating it.
Panel and CLI
keera key create makes a key that lasts 90 days, as the panel does. --expires never makes one that does not expire.
keera key rotate asks you to type the key's name first. --yes skips that.
--org works on keera guardrail, limit and budget, and a project or
key can be named by its name there.
Answers carry X-Keera-Budget-Scope and X-Keera-RateLimit-Scope, which say
which level a limit comes from.
Users hides disabled people until you tick Show disabled.
Overview is now Dashboard. Buttons that create something say Add.
Filters, Routers, MCP and Sandboxes fold into one sidebar entry until the
organisation uses them.
Claude Code's dated model ids, such as claude-haiku-4-5-20251001, reach the
matching subscription model.
The binary reports the tag, the short commit, and -dirty when built from a
changed tree.
Performance
Streams flush once per read from upstream rather than once per token. This
was most of the CPU a stream cost.
Renaming the model in each streamed chunk no longer allocates.
/metrics no longer holds a lock while a slow reader reads.
Fixes
The live request log works with several gateway replicas.
The image builds from a plain clone. It writes vendor/ itself when it is
missing.
Every latency histogram in /metrics now has its _sum.
An unknown KEERA_LOG_LEVEL or KEERA_LOG_FORMAT stops the start, instead
of being ignored.
Organisation names are unique, ignoring case.
keera logout makes the one sign-in left the default.
A project or prompt can be called help.
Sandboxes
The podman driver is for local development and tests only. Use kubernetes in production.
The variables the gateway passes to the sandbox entrypoint are documented,
for images that replace it.
Pi's version is pinned with a lock file.
Breaking changes
Start with a new database. The schema changed in place, so a v0.2.0
database cannot be upgraded.
Team is now project, everywhere.keera team is keera project, --team is --project, the guardrail scope team is project, and keera usage --by team is --by project. In the control API, /v1/teams
is /v1/projects and team_id is project_id.
A key's alias is now its name.keera key create --alias is --name, and so is the field in the control API.
Only administrators issue keys. Members ask for their first key, then
rotate it themselves.
Keys from keera key create expire after 90 days unless --expires
says otherwise.
The gateway no longer connects to loopback. A model on 127.0.0.1 needs KEERA_UPSTREAM_DENY without the loopback entries. make dev does this.