Repository navigation
v0.23.0
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
- 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, orrailway variable delete FASTAGENT_AUTH_SEED, plus any_2,_3… parts), then runfastagent login <provider> --deployment <host>. Seedocs/deploy.md. - Credential order (#653): a global login (
~/.fastagent/.secrets/auth.json) no longer outranks the project's ownmodels.jsonkey or env var. If an agent relied on the global login winning, check the startup auth line. fastagent chathistory (#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/resumefrom the workspace.
Breaking
Deploy and auth
deploy --runnever carriesauth.json. When the model's credential is not in.secrets/.env(ormodels.json),--runstartslogin --deploymentafter the box answers and before any webhook is registered; without a terminal it stops withnot 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 agentcoresays so and recommends an API key for unattended agents; without a terminal it refuses before building (#656). - Removed:
FASTAGENT_AUTH_SEEDand the AgentCoreFastagentAuthSeed*parameters (#656). - For one provider, an agent uses the first of: its own
auth.json, anapiKeyinmodels.json, the provider's env var, the global~/.fastagent/.secrets/auth.json(#653).
API
createPiAgentFromDirreturnsmodels: AgentModelsin place ofauth(models.authis the same value) (#673).- Passing both
authPathandcredentialStorethrows;logingiven neither throws instead of writing the global file (#655). - A named
authPathresolves~and relative paths likeFASTAGENT_AUTH_PATH, on every rung (#660).
CLI
fastagent chatruns in the workspace (the agent directory's parent), likedev/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 --refreshwrites the agent'smodels-store.json(-gwrites~/.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 modelslists what the agent here can name. Nothing refreshes on its own. - Custom credential store (#655): every entry that takes
authPathalso takescredentialStore(pi-ai'sCredentialStore, re-exported from@fastagent-sh/fastagent/pi), e.g. an OS keychain. - Session images (#670):
user/toolentries anduser_messagecarryimages: { ref, mimeType }[];Session.image(ref)reads the bytes, over the wire viaGET /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-missingsay why a credential does not authenticate (#673).
Fixes
deploy: an unreadable directory under.secretsstops the image leak check instead of reading as empty; a failedrailway volume listgates instead of creating a second volume (#671).deploy agentcore --runno longer stops at the AWS CLI pager;deploy railway --runno longer stops atrailway add's variable prompt (#656).- A queued
steer/followUpimage pi cannot resize is logged instead of sent silently; a resizer throw fails the action (#674). - The first-run model pick and
add feishusay why a best-effort fallback was taken (#664).
Full list: v0.22.1...v0.23.0