Skip to content

v0.23.0

Choose a tag to compare

@kid7st kid7st released this 30 Sep 10:19
bf5518e

A deployment now logs in by itself: deploy no longer ships the local auth.json, and fastagent login --deployment runs the login on the deployed box. Agents can refresh and ship a model catalog, so a model released after the installed pi is usable and deployable. The session control plane publishes tool-call arguments and images.

Upgrading from 0.22

  1. Deployments made with 0.22 or earlier (#656): they still hold a seeded copy of this machine's auth.json. Delete the old secret (fly secrets unset FASTAGENT_AUTH_SEED, or railway variable delete FASTAGENT_AUTH_SEED, plus any _2, _3… parts), then run fastagent login <provider> --deployment <host>. See docs/deploy.md.
  2. Credential order (#653): a global login (~/.fastagent/.secrets/auth.json) no longer outranks the project's own models.json key or env var. If an agent relied on the global login winning, check the startup auth line.
  3. fastagent chat history (#662): chat now runs in the workspace. Chat sessions recorded since 0.22.0 sit under the agent directory's key and do not appear in /resume from the workspace.

Breaking

Deploy and auth

  • deploy --run never carries auth.json. When the model's credential is not in .secrets/.env (or models.json), --run starts login --deployment after the box answers and before any webhook is registered; without a terminal it stops with not logged in: … run \fastagent login --deployment ``, exit 1 (#656).
  • AgentCore resets its storage on every deploy and after 14 idle days, and the login with it. deploy agentcore says so and recommends an API key for unattended agents; without a terminal it refuses before building (#656).
  • Removed: FASTAGENT_AUTH_SEED and the AgentCore FastagentAuthSeed* parameters (#656).
  • For one provider, an agent uses the first of: its own auth.json, an apiKey in models.json, the provider's env var, the global ~/.fastagent/.secrets/auth.json (#653).

API

  • createPiAgentFromDir returns models: AgentModels in place of auth (models.auth is the same value) (#673).
  • Passing both authPath and credentialStore throws; login given neither throws instead of writing the global file (#655).
  • A named authPath resolves ~ and relative paths like FASTAGENT_AUTH_PATH, on every rung (#660).

CLI

  • fastagent chat runs in the workspace (the agent directory's parent), like dev/start: its tools, ctx.cwd, prompt <cwd> and session records are the workspace's (#662).

New

  • fastagent login [provider] --deployment [host] logs the deployed box in through its host's shell (Docker, Fly, Railway, AgentCore); the box holds its own grant (#656).
  • Model catalog (#668): fastagent models --refresh writes the agent's models-store.json (-g writes ~/.fastagent/models-store.json); refreshModelCatalog(dir, …) is the API form. The agent's file ships with the definition, so the deployed agent knows the same models. fastagent models lists what the agent here can name. Nothing refreshes on its own.
  • Custom credential store (#655): every entry that takes authPath also takes credentialStore (pi-ai's CredentialStore, re-exported from @fastagent-sh/fastagent/pi), e.g. an OS keychain.
  • Session images (#670): user/tool entries and user_message carry images: { ref, mimeType }[]; Session.image(ref) reads the bytes, over the wire via GET /control/sessions/{id}/image?ref=….
  • Tool-call arguments in history (#658): assistant entries publish toolCalls: { id, name, args }[].
  • The startup auth line and login --if-missing say why a credential does not authenticate (#673).

Fixes

  • deploy: an unreadable directory under .secrets stops the image leak check instead of reading as empty; a failed railway volume list gates instead of creating a second volume (#671).
  • deploy agentcore --run no longer stops at the AWS CLI pager; deploy railway --run no longer stops at railway add's variable prompt (#656).
  • A queued steer/followUp image pi cannot resize is logged instead of sent silently; a resizer throw fails the action (#674).
  • The first-run model pick and add feishu say why a best-effort fallback was taken (#664).

Full list: v0.22.1...v0.23.0