Releases
What's new in AgentOS
What changed in the AgentOS platform and its TypeScript and Python SDKs, newest first. RSS
Security
- The API key no longer appears when a run, task or span is serialised with
JSON.stringifyor printed withutil.inspect. In 0.3.0 and 0.4.0, logging or returning one of these objects exposed the key. Upgrade, and rotate any key that may have been logged. - Redirects are no longer followed. A redirect fails with an
AgentOSErrorcodedREDIRECT; setbaseUrlto the final address. - A
baseUrlthat uses plainhttp://for anything other than localhost logs a warning, since the key would travel unencrypted.
- The API key no longer appears when a run, task or span is serialised with
Added
- Control plane. Every workspace operation as a typed method:
aos.agents,aos.runs,aos.approvals,aos.evals,aos.schedules,aos.resources,aos.alerts,aos.reports,aos.tools,aos.folders,aos.conversations,aos.members,aos.apiKeys,aos.notifications,aos.integrations,aos.marketplace,aos.fleetandaos.workspaces(56 methods). Generated from the server's schemas; see the reference. workspaceoption andAGENTOS_WORKSPACE, for control-plane calls with a personal key.
Changed
- The README is rewritten as a complete guide.
- Control plane. Every workspace operation as a typed method:
Breaking
invoke()returns{ runId, status, output, durationMs, sessionId, approval, inputRequest }.statusis"completed","awaiting_approval"or"awaiting_input"; a paused run used to look like a success with an empty output.outputisnullwhile paused, and typed with a generic (invoke<T>()).emitLLMResponse()takes token usage in camelCase:{ inputTokens, outputTokens }.- The LangChain handler records a span tree instead of tasks and events.
- Node 20 or later.
Added
- Configuration from the environment:
AGENTOS_API_KEY,AGENTOS_AGENT_ID,AGENTOS_BASE_URL,AGENTOS_DISABLED.agentIdis optional and can be passed per call, for workspace keys. invokeStream(),reply(), and the full invoke API:sessionId,startSession,history,externalUserId,parentRunId,test.withRun(), which completes or fails a run around a function.run.cancel(),run.complete({ usage })for token counts, andspan.fail().client.flush()andclient.shutdown(). In Node, queued events are also sent automatically before exit.- Retries with backoff for transient failures; a 429's
Retry-Afteris honoured. Invokes are only retried on 429, since the agent may already be running. AgentOSTransientError,AgentOSConfigError,statuson every error, andretryAfteronAgentOSRateLimitError.- Options:
maxQueueSize,maxRetries,timeoutMs,onError,fetch. startRun({ parentRunId }).
Fixed
- A failed background flush could crash the Node process with an unhandled rejection.
- Events were lost silently when a send failed. Transient failures now stay queued and retry; rejected batches are dropped and counted in
run.droppedEvents. - The event queue is bounded. When it fills, debug and info events are dropped before warnings and errors.
- The LangChain handler reported every model as
"llm"and every tool as"tool", and made a network call on each chain step. - The package declares
"type": "module"and separate type declarations forimportandrequire. Its ES module build was being loaded as CommonJS, which can breakimporton older Node versions.
- Prompt variables and parent run ids on
invoke().
- Prompt variables and parent run ids on