Observed since 20 Oct, 22:34 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Own your agent as a neutral folder; audit its portability, compile it to provider formats (Anthropic YAML / AWS Bedrock AgentCore / Google ADK), and deploy it live (Anthropic, AWS Bedrock AgentCore Harness, Google Agent Engine). Own the definition, rent the runtime.

Agent runtimes all want your agent in a different shape. agentlift lets you define it
once as a neutral .managed-agents/ folder — system prompt, skills, MCP servers, tool
allowlist, subagents — then audit, export, or deploy it to Anthropic Managed
Agents, AWS Bedrock AgentCore, Google Agent Engine, or OpenAI Agents SDK. And now import
reads a live agent back into the folder — so you can migrate between runtimes, not just
deploy to them.
Own the definition. Rent the runtime.
It's the folder you already use with Claude Code / the Agent SDK (CLAUDE.md/agent.md +
skills/ + .mcp.json + a roster). Nothing new to learn — the thing you have is the input,
and it stays yours, not a vendor's.
pip install agentlift
agentlift audit ./my-agent # how portable is it, per provider? (offline)
agentlift deploy ./my-agent # → Anthropic Managed Agents (reference target)
agentlift deploy ./my-agent --target bedrock # → AWS Bedrock AgentCore (Claude-native)
agentlift deploy ./my-agent --target google # → Google Vertex AI Agent Engine (preview)
agentlift export openai-agents ./my-agent # → an OpenAI Agents SDK script (self-host)
agentlift import anthropic ./my-agent # ← read a live agent back into the folder
agentliftnot found after install? Run it module-style —python -m agentlift.cli <cmd>(the launcher just landed offPATH; add it if you prefer the short form).
Because the folder is the neutral pivot, import + deploy is a migration — pull an agent out of one runtime and push it into another:
# Anthropic → AWS Bedrock
agentlift import anthropic ./agent # read the live agent into ./agent
agentlift deploy ./agent --target bedrock --mode harness # redeploy it to AWS Bedrock AgentCore
# (or `agentlift export bedrock-strands ./agent` for a self-host container instead)
# …and back the other way
agentlift import bedrock ./agent --harness-name my-agent --bedrock-region us-west-2
agentlift deploy ./agent # → Anthropic Managed Agents
Anything that doesn't survive a given hop is surfaced as a agentlift plan diagnostic before you
deploy — never a silent lossy copy. See docs/import.md for the round-trip details
and the one-way limitations.
Adopt a provider's native tooling — Anthropic YAML, a Bedrock Strands container, Google ADK Python, an OpenAI graph — and your agents are now shaped by that provider. The day you want a different runtime, you re-author everything. agentlift makes the deploy unit the same folder you develop against, keeps it provider-neutral, and treats each runtime as a back-end of one compiler. One definition, many backends, no lock-in.
The believable bit isn't "we generated config" — it's that an uploaded skill actually fires
inside the hosted runtime. plan is a deterministic, no-network dry run; deploy pushes it;
run proves the skill rode along:
$ agentlift plan ./examples/quickstart
Skills to upload: 1
- receipt-stamp (035823c8, 1 file) used by: knowledge-agent
Agents to create: 1
- knowledge-agent [claude-haiku-4-5] tools: read/glob/grep skills: @skill:035823c8
Deployable: yes
$ agentlift deploy ./examples/quickstart -y
skill 'receipt-stamp': uploaded skill_01Ph… agent 'knowledge-agent': created agent_019L…
Lockfile written: ./examples/quickstart/.agentlift-lock.json
$ agentlift run knowledge-agent --project ./examples/quickstart --task "What is a North Star metric?"
A North Star metric is the single measure that best captures the value users get…
RECEIPT: metric captured ← the uploaded SKILL.md firing inside the hosted runtime
latency 5.9s | in 4121 out 220 | ~$0.0044
The plan is a pure function of the folder (same input → same plan): it's the dry-run, the diff, and what the offline tests assert against.
agentlift reads a convention you may already use. A minimal single agent:
my-agent/.managed-agents/knowledge-agent/
├── agent.md # YAML frontmatter + system prompt
├── skills/receipt-stamp/SKILL.md # uploaded as a managed skill
└── knowledge/pm-basics.md # folded into the system prompt
---
name: knowledge-agent
model: claude-haiku-4-5
tools: [read, glob, grep] # built-in allowlist (omit = all)
---
You are the Knowledge Agent. Answer product questions concisely.
…and the same convention scales to a multi-agent system — a coordinator, workers, shared and private skills/MCP servers, all wired by frontmatter:
.managed-agents/
├── shared/skills/cite-sources/SKILL.md # shared skill — uploaded once, used by many
├── shared/mcp.json # shared MCP — one server, many agents
├── lead/agent.md # subagents: [bug-finder, researcher] → coordinator
├── bug-finder/ (agent.md + skills/bug-report/) # private skill
└── researcher/ (agent.md + mcp.json) # private MCP
A bare ref (search) resolves to the agent's own resource first, then shared/. Your local
.claude/agents/ are never swept in. Full spec: docs/convention.md.
parse → plan → apply → run — and only apply/run touch the network.
.agentlift-lock.json
(local definition → remote IDs) so re-deploys are idempotent. Commit it.--local.Diagnostics surface anything a runtime can't represent — never a silent drop. Internals: docs/how-it-works.md.
One folder, four managed-agent runtimes — at different maturity tiers. agentlift audit
rates portability per provider before you deploy; the table below is what agentlift ships
today:
| Runtime | Deploy status | Model | Notes |
|---|---|---|---|
| Anthropic Managed Agents | ✅ Live — reference target, fullest mapping | Claude (native) | skills · MCP · :ask · coordinator |
| AWS Bedrock AgentCore | ✅ Live — both primitives: managed Harness (single agent · skills · MCP · sandbox · browser, 6/6 live-verified) and custom-container Runtime (multi-agent; subagent delegation live-verified); the AWS AgentCore feature is in public preview | Claude (native, no remap) | --mode auto routes single→Harness, team→Runtime (deploy-bedrock.md) |
| Google Vertex AI Agent Engine | 🟡 Live (preview) | Claude → Gemini | skills · MCP · web tools; deploy-google.md |
| OpenAI Agents SDK | 📦 Export / self-host | gpt-* | as_tool composition; no hosted-deploy path |
Each runtime captures the agent differently (Anthropic YAML, a Strands/AgentCore container, ADK
Python, an Agents SDK script) — the full cell-by-cell map is
docs/provider-matrix.md. Read the tier before assuming parity:
Google is preview; on AWS a single agent deploys to the Harness and a multi-agent team
deploys to the custom-container Runtime (both live) — and the Runtime's nested specialist
skill/MCP calls are wired + output-corroborated, not independently exercised (the /invocations
response is the container's JSON body, not a tool-event stream).
agentlift's claims are pinned by tests and committed live receipts, not prose:
Live coverage matrix — one neutral fixture deployed + queried on Anthropic and Google,
with all six portability dimensions (agents · subagents · shared/individual MCP ·
shared/individual skill) EXERCISED server-side (committed receipts under
tests/live/receipts/).
AWS Bedrock AgentCore — both primitives live-verified (committed Nova receipts):
CreateHarness → READY then InvokeHarness exercising
agent + base-session sandbox + remote MCP + S3-loaded skill + agentcore_browser.CreateAgentRuntime → READY → InvokeAgentRuntime, with subagent
DELEGATION exercised (the coordinator's top-level trace named both specialists); a single-agent
smoke separately exercised a root-level MCP call. Nested specialist skill/MCP are wired +
text-corroborated (the /invocations body isn't a tool-event stream).Managed vs local benchmark (benchmarks/results.md,
claude-haiku-4-5):
| Arm | Pass rate | Median latency | Avg cost |
|---|---|---|---|
| managed (cloud) | 100% on N=5 runs | 5.9s | $0.0052 |
| local (your machine) | 100% on N=5 runs | 2.3s | $0.0034 |
Pass = the uploaded skill fired and the answer was on-topic. Same folder, two runtimes, identical behavior.
pytest -m "not live" # deterministic translation + idempotency — no API key, runs in CI
pytest -m live # deploy to the real API, run, LLM-grade (needs credentials)
shared/); the
repo-root CLAUDE.md, a sibling's skills, and your machine's MCP servers can't leak in. Pinned
by tests/test_isolation.py.:ask to any tool (bash:ask, create_issue:ask) and
the hosted agent pauses for caller approval — the deployable form of a hook.deploy --yes), a git-push workflow,
or from inside Claude Code. Idempotent via the lockfile.validate · plan · audit · export · diff · deploy · import ·
run · list · destroy · bench. See docs/deploying.md.import reads a live Anthropic agent (or a Bedrock
harness) back into the folder; deploy it elsewhere and the folder is the neutral pivot.
See docs/import.md.| Doc | What's in it |
|---|---|
| docs/convention.md | The .managed-agents/ folder spec — frontmatter, skills, MCP, :ask, subagents |
| docs/how-it-works.md | parse → plan → apply → run, determinism, idempotency, the lockfile |
| docs/import.md | import — read a live agent back into the folder; the round-trip + migration story, one-way losses |
| docs/deploying.md | The three deploy paths, commands, the lockfile, install/PATH |
| docs/provider-matrix.md | Cell-by-cell capability matrix across all four runtimes |
| docs/anthropic-mapping.md | Exact local → Managed Agents field mapping |
| docs/deploy-bedrock.md · deploy-google.md | Per-provider credentials, gates, and caveats |
| docs/tested-platforms.md | Per-platform live receipts + reproduce steps |
| docs/limitations.md | Honest constraints (stdio MCP, MCP auth, knowledge inlining) |
Examples: quickstart/ (one agent) ·
team/ (coordinator + roster, shared skill, MCP, bash:ask) ·
in-a-project/ (embedded in a real repo, proves isolation) ·
deploy-workflow/ · claude-code-skill/.
Each is surfaced as a agentlift plan diagnostic, never a silent surprise — full list in
docs/limitations.md:
stdio servers (npx …) can't be deployed; host behind HTTPS./invocations boundary (wired + output-corroborated, not independently exercised).import reads Anthropic (full) and the Bedrock harness back into the folder; a Bedrock Runtime is an opaque container and refuses. Knowledge inlining, custom tools, and MCP auth values don't round-trip (each flagged as a diagnostic). See docs/import.md.Current focus: a same-Claude-brain AWS receipt (Gate A: the one-time Anthropic
use-case entitlement — the hosted Runtime + Harness are already live-proven on Nova), surfacing
the Runtime's nested specialist tool calls past the /invocations boundary, and a self-hostable
openai-chatkit export. Per-provider gaps and status live in their deploy docs and
docs/provider-matrix.md.
MIT — see LICENSE.
pypistats · 50 observations shown. Missing days are unknown. Source category: overall: without mirrors.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-20 – 2026-10-20 | 2 | 2026-10-21T11:42:07.1354541Z |
| 2026-10-19 – 2026-10-19 | 2 | 2026-10-21T11:42:07.1354541Z |
| 2026-10-18 – 2026-10-18 | 4 | 2026-10-21T11:42:07.1354541Z |
| 2026-10-17 – 2026-10-17 | 11 | 2026-10-21T11:42:07.1354541Z |
| 2026-10-16 – 2026-10-16 | 11 | 2026-10-21T11:42:07.1354541Z |
| 2026-10-15 – 2026-10-15 | 3 | 2026-10-21T11:42:07.1354541Z |
| 2026-10-14 – 2026-10-14 | 3 | 2026-10-21T11:42:07.1354541Z |
| 2026-10-13 – 2026-10-13 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-10-12 – 2026-10-12 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-10-10 – 2026-10-10 | 17 | 2026-10-21T11:42:07.1354541Z |
| 2026-10-09 – 2026-10-09 | 2 | 2026-10-21T11:42:07.1354541Z |
| 2026-10-06 – 2026-10-06 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-10-05 – 2026-10-05 | 6 | 2026-10-21T11:42:07.1354541Z |
| 2026-10-02 – 2026-10-02 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-10-01 – 2026-10-01 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-09-30 – 2026-09-30 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-09-29 – 2026-09-29 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-09-28 – 2026-09-28 | 2 | 2026-10-21T11:42:07.1354541Z |
| 2026-09-27 – 2026-09-27 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-09-26 – 2026-09-26 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-09-23 – 2026-09-23 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-09-22 – 2026-09-22 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-09-20 – 2026-09-20 | 22 | 2026-10-21T11:42:07.1354541Z |
| 2026-09-16 – 2026-09-16 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-09-14 – 2026-09-14 | 6 | 2026-10-21T11:42:07.1354541Z |
| 2026-09-13 – 2026-09-13 | 20 | 2026-10-21T11:42:07.1354541Z |
| 2026-09-10 – 2026-09-10 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-09-09 – 2026-09-09 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-09-07 – 2026-09-07 | 5 | 2026-10-21T11:42:07.1354541Z |
| 2026-09-06 – 2026-09-06 | 2 | 2026-10-21T11:42:07.1354541Z |
| 2026-09-05 – 2026-09-05 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-09-04 – 2026-09-04 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-09-03 – 2026-09-03 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-09-01 – 2026-09-01 | 4 | 2026-10-21T11:42:07.1354541Z |
| 2026-08-31 – 2026-08-31 | 3 | 2026-10-21T11:42:07.1354541Z |
| 2026-08-30 – 2026-08-30 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-08-29 – 2026-08-29 | 13 | 2026-10-21T11:42:07.1354541Z |
| 2026-08-28 – 2026-08-28 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-08-25 – 2026-08-25 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-08-24 – 2026-08-24 | 21 | 2026-10-21T11:42:07.1354541Z |
| 2026-08-23 – 2026-08-23 | 3 | 2026-10-21T11:42:07.1354541Z |
| 2026-08-17 – 2026-08-17 | 2 | 2026-10-21T11:42:07.1354541Z |
| 2026-08-14 – 2026-08-14 | 5 | 2026-10-21T11:42:07.1354541Z |
| 2026-08-09 – 2026-08-09 | 8 | 2026-10-21T11:42:07.1354541Z |
| 2026-08-06 – 2026-08-06 | 17 | 2026-10-21T11:42:07.1354541Z |
| 2026-08-04 – 2026-08-04 | 2 | 2026-10-21T11:42:07.1354541Z |
| 2026-08-03 – 2026-08-03 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-08-02 – 2026-08-02 | 1 | 2026-10-21T11:42:07.1354541Z |
| 2026-07-27 – 2026-07-27 | 3 | 2026-10-21T11:42:07.1354541Z |
| 2026-07-23 – 2026-07-23 | 8 | 2026-10-21T11:42:07.1354541Z |
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.8.0 | 8 Jun 2026 | 6 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 22:34 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:28ec51411cfb936d7a324ca28880c393c2ba9e62d7aaa2f077a92d887687a35d