Compatibility matrix
What runs where, today. Embedded means in-process SDK execution: @agntz/sdk for TypeScript and agntz for Python. Hosted means agntz.co and self-hosted workers.
| Feature | TS embedded | Python embedded | Hosted worker |
|---|---|---|---|
| LLM agents | ✓ | ✓ | ✓ |
| Sequential / parallel / tool kinds | ✓ | ✓ | ✓ |
| Canonical recursive JSON Schema | ✓ | ✓ | ✓ |
| Common model controls / provider options | ✓ | provider-dependent | ✓ |
| Ordered text + image content | ✓ | provider-dependent | ✓ |
| Managed input/output artifacts | × | × | ✓ |
| Transcription manifest kind | × | × | ✓ (OpenAI built-in) |
| Image manifest kind | × | × | ✓ (OpenAI built-in) |
none / result / session retention | runtime-specific | runtime-specific | ✓ |
| Local tools | ✓ (JS/TS) | ✓ (Python) | (use MCP / HTTP instead) |
| HTTP tools | ✓ | ✓ | ✓ |
| Signed callback tools | ✓ if SecretStore wired | not yet | ✓ |
| HTTP tools — OAuth2 / token exchange | ✓ | partial | ✓ |
| MCP tools (raw URL + headers) | ✓ | ✓ (HTTP JSON-RPC) | ✓ |
| Agent-as-tool | ✓ | ✓ | ✓ |
Runtime context namespace grants | ✓ | ✓ | ✓ |
resources: manifest declarations | ✓ | ✓ | ✓ if provider wired |
| Generic resource provider runtime | ✓ | ✓ | self-host configurable |
| memrez memory resource provider | ✓ | ✓ | self-host configurable |
| memrez SQLite / Postgres memory stores | ✓ | ✓ | deployment-owned |
| memrez built-in LLM reasoner default | ✓ | ✓ | ✓ |
| memrez preload context policy | ✓ | ✓ | ✓ |
| Spawnable subagents | ✓ | not yet | ✓ |
Skills (use_skill tool) | ✓ | not yet | ✓ |
| Reply tool (intermediate messages) | ✓ | persisted messages only | ✓ |
| Sessions | ✓ (memory or sqlite) | ✓ (memory or sqlite) | ✓ (managed) |
| Runs & traces | ✓ (bounded memory or persisted store) | ✓ (memory or sqlite) | ✓ (Postgres) |
| Eval records / datasets | ✓ | ✓ | ✓ |
| Local streaming for LLM agents | ✓ (full event stream) | start / complete snapshots | N/A |
| Hosted SSE streaming | ✓ | ✓ | ✓ |
| OpenTelemetry export | ✓ | not yet | ✓ |
{{env.X}} template refs | ✓ | not yet | opt-in per server |
{{secrets.X}} template refs | ✓ (configured SecretStore) | × | ✓ |
| Versioned refs | ✓ (persisted stores) | ✓ (persisted stores) | ✓ |
| Version aliases | local store aliases | local store aliases | ✓ |
| Multi-user isolation | × | × | ✓ |
| API key auth | × | × | ✓ |
| Web UI (editor, playground, traces) | × | × | ✓ |
| Evals UI | × | × | roadmap |
Migration paths
Embedded → hosted
Most of the way is a constructor change (see Embedded SDK → Switching to hosted). The main fixes are:
- Local tools — promote to HTTP endpoints or MCP servers. The YAML
tools:block is the only place the change is visible. {{env.X}}→{{secrets.X}}— multi-tenant workers do not share an environment with your code. Use{{secrets.X}}and configure values in Settings → Secrets.- Resources — make sure the hosted worker has the same provider kinds wired server-side. Runtime
contextgrants still come from trusted application code. - Version refs — local persisted stores and hosted stores can resolve bare ids,
@latest, exact version timestamps, and aliases. In-memory registered agents do not retain version history. - Local media — the hosted TypeScript and Python clients upload local files automatically. Direct HTTP callers must upload an artifact or send URL/base64 content blocks.
- Local business tools — use signed callback tools when the model needs to call an application-owned endpoint with trusted run context.
TypeScript embedded → Python embedded
Keep the same YAML manifest. Translate only the host language code:
The Python SDK follows Python naming conventions, so wire names become agent_id and session_id while YAML fields remain unchanged.
Resource and memory APIs use the same pattern: TypeScript passes resources: { memory: memrez.provider() }; Python passes resources={"memory": memrez.provider()}. Both embedded runtimes support memrez's built-in LLM reasoner default plus agent-side preload config.
Hosted → self-hosted
The hosted clients work against any worker — api.agntz.co or your own. Switch by setting baseUrl / base_url and using an API key minted on your self-hosted UI.
Resources
- GitHub: github.com/aparry3/agntz — source, issues, discussions.
- npm:
@agntz/sdk,@agntz/client,@agntz/core,@agntz/contracts,@agntz/db,@agntz/stores,@agntz/memrez. - Python:
agntzpackage with optionalagntz[litellm]local model support. - License: MIT.
- AI-friendly: Every page exposes its raw markdown via the Copy button; the full corpus is at /llms.txt.