Any framework. Any protocol. One runtime you own.
Aarmos brokers the protocol your framework already emits.
You do not rewrite your agent, install an Aarmos-flavored fork of your framework, or import a framework-specific SDK. Aarmos sits below the framework, at the protocol layer, and enforces policy + writes a signed AVAR receipt on the way out.
Why protocol-first, not framework-first
- Zero-line enrolment. Point a framework at
eval "$(aarmos env)"and every outbound call runs under Aarmos policy. No import. No wrapper. - Runtime-invariant. The moat is the runtime, not the SDK. A per-framework SDK for every framework is a hedonic treadmill — the protocol set is finite.
- No hosted request path. The proxy binds 127.0.0.1 and forwards to the client's original destination. No Aarmos-hosted service ever proxies or sees agent data.
Framework → protocol → on-ramp
| Framework | Emits | Aarmos on-ramp |
|---|---|---|
| LangChain / LangGraph | HTTP · OpenAI-compatible endpoint | aarmos proxy (zero code) · openapi adapter |
| AutoGen | HTTP · OpenAI-compatible endpoint · Docker exec | aarmos proxy (zero code) · openapi adapter |
| CrewAI | HTTP · OpenAI-compatible endpoint | aarmos proxy (zero code) · openapi adapter |
| OpenAI Swarm / Assistants | HTTP · OpenAI-compatible endpoint | aarmos proxy (zero code) |
| MCP client (any) | Model Context Protocol | mcp adapter |
| Custom scripts, cron, shell agents | HTTP · webhooks · URL schemes | aarmos proxy · deeplink adapter |
Aarmos ships no framework-specific package — @aarmos/langchain, @aarmos/autogen, @aarmos/crewai, @aarmos/swarm are explicitly banned as headline features. Zero lines beats three.
Zero-code on-ramp
# 1. Start the transparent local proxy
aarmos proxy
# 2. Point your framework at it — any framework
eval "$(aarmos env)" # authenticated HTTPS_PROXY + HTTP_PROXY
# ...or, for OpenAI-compatible clients:
export OPENAI_BASE_URL=http://127.0.0.1:7681/v1 # default port; change with --port
# 3. Run your agent unchanged
python my_langchain_agent.py
▸ tool: openapi://api.openai.com/v1/chat (adapter: proxy) ✓ scoped
▸ tool: openapi://api.slack.com/post (adapter: proxy) ✓ scoped, confirm
✓ AVAR receipt: .aarmos/avar/9a4b…c1.avar
verify: avar verify .aarmos/avar/9a4b…c1.avarThe proxy forwards to the ORIGINAL destination. It never routes through an Aarmos-hosted service, and it never phones home on the request path.