Skip to main content
FeatureCloud-Native (DIY)AutonomyCompletenessDIY PainAutonomy Advantage
EXECUTION AND RUNTIME
Unit at run timeContainer / Pod / LambdaActorCompletedHeavy (MBs-GBs), slow startup, requires orchestration, image registries, deployment pipelines.Actors: ~1M per server. Lightweight stateful objects with unique address, mailbox, private state. Idle actors consume no CPU. Runtime automatically gives CPU to actors with messages.
Life span of a taskMillisecondsSeconds to DaysCompletedHTTP Req → DB → Resp. Long-running requires Step Functions, chains of Lambdas, custom checkpoint/resume, etc. Complexity explodes with state management.Agents loop: build context → decide → call tools → gather responses. Loop runs for thousands of iterations until goal achieved.
Where state livesExternal databaseActor’s private internal stateCompletedBuild connection pooling, caching, consistency logic. State reconstruction on every invocation for serverless. Long-running agents require complex external state management.Each actor’s state is completely private. Other actors cannot directly access or modify it. Eliminates race conditions and deadlocks. Long-running agents are simple. State just lives in the actor.
Concurrency modelOne container or Lambda per user per agentActorCompletedFor long-running agents, each concurrent user needs their own container or Lambda. Infrastructure units scale linearly with users. You have to manage and coordinate thousands of containers.Each actor processes one message at a time. Messages queue in mailbox. No locks. Thousands of concurrent users share one container. Naturally concurrent without coordination overhead and infrastructure overhead.
Failure isolationPod / Lambda levelActor levelCompletedCrash takes down container and all work inside. Configure resource limits, disruption policies, security contexts, restart policies.One actor crashes, others continue unaffected. No corruption propagation. Actors supervise other actors. Agents supervise sub-agents.
ScalingDynamic infrastructure provisioningAgent spawningCompletedLong-lived work per user means dynamically provisioning containers or Lambdas as users arrive. Orchestrate infrastructure at runtime, manage state in external DBs, handle cold starts under load.Agents spawn sub-agents as needed. Thousands of actors share one container. No infrastructure provisioning per user. Scaling is just spawning more actors.
Cold starts500ms - 2 minutes1-2 msCompletedOptimize with pre-provisioned capacity, smaller images, init optimization, etc. Extremely challenging.Actors, and hence agents, start in milliseconds. Hundreds of thousands run in parallel inside a single process. No warming strategies, no image pulls, no scheduling delays.
COMMUNICATION AND REACH
CommunicationHTTP, gRPC, Kafka, SQSActor messages over OckamCompletedBuild serialization, retries, circuit breakers, service discovery, schema versioning, dead letter queues, consumer groups. Scaling communication infrastructure adds another layer of complexity.Asynchronous, non-blocking messages. All communication transparently mutually authenticated, end-to-end encrypted. High-throughput channels scale to max AWS network throughput.
RoutingService mesh, DNS, LBsOckam RoutingCompletedConfigure Istio/Linkerd, routing rules, topic partitions, consumer groups, service discovery, load balancer health checks.Location transparency via application-layer routing.
Network reachVPN, PrivateLink, peeringOckam Relays + PortalsCompletedMonths of networking work. Per-cloud configuration. Fragile connectivity. IP address management. Route table complexity.Works across clouds, VPCs, across companies, into private data centers, to dev machines, through NAT using multi-hop, multi-transport routes. No network changes required.
Private infrastructureBastion, VPN, PrivateLinkOckam PortalsCompletedManage jump hosts, configure VPN clients, set up AWS/Azure/GCP PrivateLink separately, audit access, distribute keys, maintain brittle IP allow lists.Create a relay for the private resource. autonomy zone outlet creates an encrypted tunnel. The private resource appears virtually adjacent on localhost. Just works. No firewall changes.
Firewall traversalReverse proxy, VPNOutbound-only connectionsCompletedManage firewall rules, audit changes, handle corporate security policies, maintain VPN infrastructure, deal with NAT complexity.Ockam Relays use outbound-only connections. No inbound ports needed. No risky public endpoints. Works through corporate firewalls without IT involvement.
BackpressureRate limiters, circuit breakersMailbox semanticsCompletedBuild and tune per-service. Implement circuit breakers, bulkheads, retry budgets. Different patterns for each queue/service.Messages queue in actor mailboxes. Flow control is baked into secure channels. Backpressure is baked into the design.
TopologyRigid, deploy-timeDynamic, runtimeCompletedTopology changes require config updates and redeployment. Service mesh reconfiguration. DNS propagation delays.Agents create sub-agents at runtime. Topology emerges from execution. Parent spawns children as needed for the task at hand.
CONTEXT AND KNOWLEDGE
Short-term memory of conversation historyWrite code to manage conversation historyAutomatic conversation history management and compactionCompletedEngineers have to write code to manage conversation history, handle sliding windows, and deal with stale data that can cause the agent to drift. It’s a constant effort to keep the history of messages included in context relevant and avoid failures due to outdated information.Conversation history management is automated by default. Engineers can tune by injecting their own context templates or setting parameters for summarization, trimming, and more.
Long-term storage of conversation historyStore history in an external database (e.g., Redis, DynamoDB).Built-in, two-tier agent memory with persistence.CompletedRequires provisioning and managing a separate database. Engineers must write boilerplate code for serialization, connection pooling, failover, and ensuring data consistency across every conversation.A built-in two-tier system provides in-memory speed with optional persistence. All messages, tool calls, and results are automatically stored durably with no extra code, ensuring no data is lost.
Filesystem per agentRun one container per agent to provide a private filesystem.Virtual, isolated filesystem for every agent.CompletedTo give an agent a private filesystem, you generally have to dedicate a full container to it. This ties your agent density to your container density, making it expensive and inefficient to run thousands of agents.Agents are significantly more successful at complex tasks when they have a filesystem to read, write, and manipulate files. Autonomy provides a virtual filesystem abstraction that is lightweight and isolated. Thousands of agents can share a single container while each maintains its own private, persistent file space.
Long-term knowledgeSet up and manage a vector store (e.g., pgvector, Pinecone, Weaviate).Knowledge classCompletedDeploy embedding service, provision vector DB, implement chunking strategies, build retrieval API, tune similarity thresholds, add reranking.Vector storage is automatically provisioned and managed. Simply define Knowledge(name="docs", searchable=True, ...) and the infrastructure is handled for you. Add docs with add_text() or add_document(url), and KnowledgeTool enables agentic RAG.
Memory isolationRow-level security, schemasScope + conversationCompletedHand-roll tenant isolation across every layer (DB, Vector Store, S3, Logs). One missed check in your application logic leads to a data leak between tenants. Constant auditing is required.Isolation is built-in, not tacked on. Just pass scope="tenant-123" and conversation="chat-456". Autonomy automatically partitions all state, memory, context, filesystem, and knowledge ensuring strict boundaries between tenants.
RAG pipeline5+ services to deployIntegrated into Knowledge classCompletedBuilding a RAG pipeline requires stitching together an embedding service, vector DB, chunking logic, retrieval API, and reranking model. You have to manage the infrastructure and latency for each hop.RAG is a single class, not a complex system. Configure chunking, distance thresholds, and results with simple parameters like NaiveChunker(...) or max_distance=0.2. Easily ingest docs by calling add_document.
Parallel context gatheringBuild custom fan-out infrastructureNative Agentic Scatter-GatherCompletedCollecting context from multiple sources in parallel requires building custom orchestration logic: task splitting, barrier synchronization, timeout handling, and result aggregation. Doing this reliably at scale is a complex distributed systems project.Designed to be embarrassingly parallel. Autonomy brings Spark-style fan-out to agent execution. The actor runtime and automatic clustering allow agents to spawn thousands of sub-agents to gather context from disparate systems simultaneously. This speed makes unviable use cases viable.
Just-in-time retrievalNo native filesystem for agentsReferences + Filesystem toolsCompletedBecause there is no persistent filesystem infrastructure, there is no place to save information to retrieve later. You are forced to stuff full content into the context window, which bloats costs and degrades reasoning performance.Built-in filesystem and fetch tools allow agents to store large content to disk and keep only references (paths/URLs) in context. The agent retrieves exactly what it needs, when it needs it, keeping the context window light and fast.
DECISIONS AND REASONING
Access to models from multiple providersBuild or operate a custom model gatewayModel GatewayCompletedYou have to build unified interfaces to handle each provider’s API quirks, manage credentials separately, normalize response formats, and implement your own fallback logic.Just use Model("claude-sonnet-4") or Model("gpt-4o"). The gateway handles routing, load balancing, and failover automatically. Change one string to switch providers.
Select modelsResearch, build routingCurated catalogCompletedResearch model capabilities, maintain compatibility matrices, handle deprecations, update integrations.claude-sonnet-4-5 for most apps, claude-opus-4-5 for complex reasoning, nova-micro for high volume, embed-english-v3 for search. Transparent pricing.
Rate limitingToken buckets per providerAutomatic throttling, queuing, and failoverCompletedTrack usage per provider, enforce quotas, handle 429s manually, implement exponential backoff, and manage burst capacity logic in your application code.The gateway automatically queues requests when rate limits are hit and can automatically failover to an alternate provider. Just set throttle=True and the system handles the backoff and retries.
StreamingWebSockets / SSE infrastructureNative stream=trueCompletedMaintaining long-lived WebSocket connections at scale requires specialized load balancers, stateful infrastructure, and complex client-side code to handle disconnects, backpressure, and reassembly.Streaming is a first-class citizen. Just add ?stream=true to any agent endpoint. The system handles the connection management, backpressure, and framing automatically.
Delegate tasksManage queues, RPCs, correlate responsesagent.send / delegate_to_subagentCompletedRequires deploying and managing messaging infrastructure (Kafka/SQS) and RPC frameworks. You must handle correlation IDs, timeouts, and retries at the infrastructure level to delegate tasks.Just call a function. Use delegate_to_subagent(...) for tool-based delegation or agent.send(...) for direct messaging. The system handles routing, execution, and return values automatically. No messaging infrastructure to provision or manage.
Agent HierarchiesOrchestrate state machines & workflowsNative sub-agentsCompletedModeling a hierarchy where a parent delegates to children requires complex distributed coordination: managing parent-child communication, tracking lineage, handling partial failures, and rolling back state. It quickly becomes a tangled distributed system.Hierarchies are native primitives. Define children in config: subagents={"researcher": ...}. The parent automatically gets tools to start, stop, and delegate to children (delegate_to_subagent), with all coordination handled by the runtime.
Focused sub-agent contextBuild custom sub-agent abstractionAutomatic context isolationCompletedTo give sub-agents focused context, you have to build the entire sub-agent abstraction yourself, manage the context splitting, and coordinate the delegation.Sub-agents are Actors. They inherently possess their own isolated state and context. When a parent delegates a task, the sub-agent starts with a focused context. Less noise means higher accuracy.
Compose workflowsStep Functions / TemporalPython codeCompletedRequires learning a proprietary DSL, deploying complex workflow infrastructure, and managing state serialization between steps. Debugging distributed workflows across these systems is painful.Just write Python. Define flows as graphs of agents with standard conditions and operations. There is no separate workflow engine to deploy or manage.
Control costsManually tune infrastructure and model costsHigh Density + Zero-Cost WaitingCompletedYou pay for containers and Lambdas even when they are just waiting for an LLM response or a user input. You must constantly tune instance types, manage reserved capacity, and handle spot interruptions to keep costs down.1M agents per container vs 1 agent per container. Agents are actors that consume zero CPU when waiting, so you never pay for idle time. You also save by routing simple tasks to cheaper models (nova-micro) and only using expensive ones (claude-opus) when needed.
TOOLS AND ACTIONS
Define toolsManually handle definitions, schemas, normalization, and validationTool(function)CompletedYou have to manually generate JSON schemas, handle parameter validation, coerce types, format error messages, and ensure your code matches your docs. It’s a lot of boilerplate for every single tool.Zero boilerplate. Just wrap any Python function with Tool(my_function). The system automatically turns docstrings into descriptions and type hints into JSON schemas. Sync and async are both supported.
External servicesBuild custom integrations per APIUse MCP, official SDKs, or direct API callsCompletedEvery external service is a new integration project. You have to write custom clients, handle authentication, manage errors, and maintain tests for every single API you want your agent to use.Tap into the growing library of MCP-compatible servers (GitHub, Slack, Google Drive) with one line. Or, just wrap any Python function that uses an official SDK or direct HTTP calls and expose it as a tool.
Use bash and CLI toolsSpawn sandbox containers or Lambda functionsNative local executionCompletedTo let an agent run a simple command like git or ffmpeg, you have to spin up a secure sandbox container or a Lambda function. You end up managing full infrastructure stacks just to run basic shell utilities.Agents can natively execute shell commands (git, curl, nmap) and Python scripts within their isolated environment. Need a specific tool like ffmpeg? Just install it in your Docker image and it’s instantly available to all agents.
Multi-tenant toolsManually build isolationToolFactoryCompletedBuilding multi-tenant tools requires implementing logic to swap credentials, manage connection pools, and enforce boundaries for every request. It’s error-prone and requires strict auditing to prevent data leaks between tenants.Isolation by design. Just implement a create_tools(scope, ...) factory. The framework calls it for every request, injecting the correct scope (tenant ID) automatically. Each tenant gets a pristine, isolated instance of the tool with the right credentials.
Human-in-the-loopManually handle pause for inputNative ask_user_for_input toolCompletedImplementing “pause for input” requires complex state management: persisting the conversation, setting timeouts, handling resumption tokens, and restoring the full context when the user finally responds maybe days later.Just enable the tool. Set enable_ask_for_user_input=True. The agent automatically pauses execution, saves state, and waits. When the user responds, it resumes exactly where it left off. No custom state machine code required.
Parallel tool executionSet up Step Functions to fan outBuilt-in parallel tool callsCompletedRunning multiple tools in parallel (e.g., searching three different databases) requires orchestrating fan-out logic, handling partial failures, and aggregating results manually. It’s often easier to just run them sequentially, which makes agents slow.Autonomy agents automatically invoke tools in parallel. Async tools run simultaneously, reducing latency significantly without any extra coordination code.
Distributed tool executionConfigure Kubernetes affinity & schedulingAutomatic clustering & filteringCompletedDistributing tool execution across a cluster requires managing Kubernetes node affinity, tolerations, and custom scheduling logic. You have to handle service discovery and tool availability manually to ensure tools run on the right machines.It’s simple to discover and distribute tool calls. clones: 5 creates 5 pods on separate machines. runner_filter="role=worker,cpu=high" selects nodes. Zone.nodes(node, filter="runner") discovers. Auto-clustering handles the rest.
IDENTITY AND TRUST
Workload identitySPIFFE, X.509, service accountsOckam IdentityCompletedBuild attestation flows, manage rotation, handle bootstrapping, integrate multiple identity systems.Every agent gets cryptographic identity at birth. Every message carries identity. Using robust primitives (Noise XX, Ed25519, ECDSA). Formally verified and Trail of Bits audited.
Mutual authenticationmTLS with Istio/LinkerdOckam Secure ChannelsCompletedManage certificate authorities, handle cert lifecycle, configure trust domains, deal with proxy termination, monitor expiration.End-to-end mutual authentication at message level. No proxy termination. Identity travels with every message. Resilient across network interruptions.
AuthorizationDeploy Policy Engines (OPA/Kyverno)Built-in Attribute-based access control (ABAC)CompletedTo get fine-grained auth, you have to deploy and manage policy engines like OPA, write Rego policies, integrate sidecars for enforcement, and keep policy data synced across your fleet. It’s a whole separate infrastructure layer to maintain.No extra infra. ABAC is native to Autonomy. Policies are enforced automatically on every message based on the sender’s identity attributes. No sidecars, no policy servers, no sync issues.
Trust boundariesVPC, security groupsIdentity-basedCompletedTrust requires network position. VPC peering, security group rules, NACLs. Trust model breaks across cloud boundaries.Cryptographic trust, not topological. Portals connect by identity, not IP. Trust works identically across clouds, networks, organizations.
Encryption in transitTLS / mTLSEnd-to-end encryption is defaultCompletedTrust requires managing certificates per service, handling rotation, and ensuring compliance. Trust boundaries break whenever you leave your private network or cross cloud boundaries.Ockam Secure Channels end-to-end encrypt from sender to receiver using AES-GCM or ChaChaPoly1305. No certificate management. Formally verified.
SecretsVault, Secrets Managersecrets.yamlCompletedBuild injection mechanisms, implement rotation, configure audit logging, integrate different per platform, manage access policies.All secrets are safely managed. Define in secrets.yaml: API_KEY: "sk-...". Reference as secrets.API_KEY in autonomy.yaml. Supports environment variable injection.
Tenant isolationBuild complex infra & code isolationAutomatic using scope and conversationCompletedIsolation requires work at the infrastructure layer (namespaces, network policies, database users, sandboxes) and the code layer (schemas, logic checks). Keeping these in sync to prevent data leaks is a constant operational burden.Isolation is automatic. Just pass scope="tenant-123" or conversation="chat-456". The system automatically partitions all state (memory, filesystem, knowledge, tools, and shell sessions) ensuring strict boundaries across tenants.
Agent-to-agent authAssemble complex protocolsNative identity, authentication, and access controlCompletedProtocols like OAuth were designed for humans delegating to apps, not autonomous agents acting on behalf of a company. Cobbling together OAuth, MCP, and custom auth flows to make agents trust each other is fragile and insecure.Agents are first-class identities. Every agent has a cryptographic identity at birth. They authenticate and authorize each other natively using their identities.
OPERATIONS AND DEVELOPER EXPERIENCE
DeploymentBuild complex CI/CD pipelinesautonomy deployCompletedDeployment requires stitching together CI runners, container registries, and CD tools (ArgoCD, Flux). You have to write scripts to version artifacts, manage rollouts, and handle rollbacks manually.One command to production. autonomy deploy automatically builds your agent image, pushes it to your registry, and updates your zone. Simple GitHub Actions workflows can be configured so that when you git push, a new version of your application is automatically deployed to production.
ConfigurationComplex manifests (Helm, K8s, Terraform)Simple autonomy.yamlCompletedManaging hundreds of YAML manifests, Helm charts, and Terraform state files requires a team of full-time DevOps engineers with deep expertise to handle drift, versioning, and validation.Human-readable config. A single autonomy.yaml defines everything. Just set size: big for more compute or public: true for an HTTPS endpoint. It’s simple and doesn’t need a DevOps team.
AutoscalingTune Kubernetes Autoscalers (HPA/VPA)clones: NCompletedConfiguring Kubernetes Horizontal Pod Autoscalers (HPA) requires constant tuning of CPU/memory thresholds, metrics scraping, and node pool management. Getting it wrong means slow scale-up or wasted money.One line of config. Just set clones: 5 to run 5 instances on separate machines, or change it dynamically. Agents automatically discover their peers across the cluster using Zone.nodes(). No complex tuning required.
Observability unitPod / Lambda / ContainerAgent / ActorCompletedYou have to manually stitch together distributed traces across microservices to understand what a single agent did.See full execution traces and agent transcripts: reasoning, tool calls, state transitions, memory access, and sub-agent delegations.
LoggingMaintain log shippers & aggregatorsZero-config distributed loggingCompletedYou have to deploy log shippers (Fluentd), manage expensive storage (ELK/CloudWatch), configure retention policies, and deal with high-volume log ingestion. It’s an entire subsystem to manage and pay for.Logging is built-in. Distributed, structured logs are automatically collected from every agent across the cluster. View real-time streaming logs for the whole zone in your browser or on the command line using autonomy logs.
Local developmentApproximations & MocksLocal runtime + Production reachCompletedLocal dev is painful because you can’t access private cloud resources (DBs, internal APIs) from your laptop. You rely on mocks or approximations, leading to “works on my machine” bugs.Spin up your apps locally using autonomy develop while securely connecting to real private infrastructure in zones on Autonomy Computer using Ockam Portals. This infrastructure includes model gateways, DBs, tools, and other services.
Getting startedWeeks of infra setupJust type autonomyCompletedLearn Kubernetes, networking, CI/CD, service mesh, secrets management, observability stack. Months before first production agent.No infrastructure knowledge required. Your first app can be live with a public URL in under 10 minutes. Documentation designed for coding agents. Vibe-code your way to production.
Eval and testingBuild custom eval harnessAgent transcripts and automated testing toolsCompletedTesting probabilistic software is hard. You have to build custom harnesses to run tests repeatedly, collect stats, and integrate with CI. Debugging requires manually digging for logs to understand why a test failed.Controlled iterative refinement. Autonomy exposes rich transcripts and traces that plug into any eval tool. Built-in test runners support probabilistic testing—run a scenario 50 times, measure the pass rate, and break the build only if it drops. This separates successful products from demoware.
Production tracesBuild tracing & storage infraBuilt-in agent and decision tracesCompletedCapturing the “why” behind an agent’s decision requires building a custom tracing pipeline, massive storage for high-volume logs, and a query interface to find needle-in-haystack failures.The feedback loop is built-in. Every production decision is traced automatically. See exactly why an agent took an action, find failures, turn them into test cases, and improve. This data is the foundation of your “context graph.”