portable, governed ai agents
An Agentfile declares one agent — identity, tools, typed policy. The build compiles it to an OCI artifact whose boundaries travel with it: lint them in CI and run it unchanged on local, Bedrock, or Kubernetes. Not a runtime, cloud, or framework.
# syntax=agentrc.agentfile/v0.1
FROM python:3.11-slim
IDENTITY name=hello version=0.1 author=acme
IDENTITY description="Minimal agentrc agent"
CAPABILITY text
SOP You are a minimal example agent. Read a
file when asked; do nothing else.
CMD python ./agent.py
# Tool (local, embedded) → /mnt/tools/
COPY --chmod=755 ./tools/file_read /mnt/tools/file_read
# Requests: the platform grants, narrows, or rejects
POLICY model.name claude-sonnet-4
POLICY agent.tool_timeout 30s
POLICY network dns:api.example.com:443
HEALTHCHECK --interval=60s CMD /mnt/tools/file_read --agentrc-schemaai.agentrc.* labelspolicy reviewableDeclarative & reproducible
One Agentfile captures identity, capability, policy, tools, and resources — reusing standard Dockerfile keywords plus four agent-native ones: IDENTITY, CAPABILITY, SOP, POLICY.
Policy, not hope
A POLICY line requests a model, resource, or constraint. The platform grants, narrows, or rejects it and enforces the decision with Cedar, deny-by-default.
Portable everywhere
The build translates intent into namespaced ai.agentrc.* OCI labels. Platforms read the labels — never the Agentfile — so agents ship, sign, and mirror like any container image.
Install the CLI
One binary — agentrc (alias arc). It scaffolds, validates, and builds Agentfiles, inspects what an agent requests, and translates an artifact into a backend's deploy config.
curl -fsSL https://agentrc.ai/install.sh | sh
brew install
adeelahmad/tap/agentrc
go install
github.com/adeelahmad/agentrc/cmd/agentrc@latest
git clone https://github.com/adeelahmad/agentrc
cd agentrc && go build -o arc ./cmd/agentrc
Prebuilt, checksum-verified binaries for macOS & Linux (amd64 / arm64). Confirm with arc version. Prefer to read first? curl -fsSL https://agentrc.ai/install.sh and inspect it.
Build and run — locally
Scaffold, validate, and compile an agent into a portable OCI artifact, then preview exactly what a local runner would execute.
- Scaffold
arc init › writes ./Agentfile - Validate
arc lint Agentfile › identity, policy & schema - Build
arc build -t ghcr.io/you/hello:0.1 . › OCI artifact - Preview the run
arc run ghcr.io/you/hello:0.1 --backend local --dry-run
arc build produces a real OCI image (via docker build and the agentrc BuildKit frontend). --dry-run prints the config a runner would apply — agentrc declares and translates; it ships no runtime of its own.
Ship the same artifact to the cloud
The build writes ai.agentrc.* labels once. Point arc run at any backend to translate those labels into that platform's deploy form.
Push once
arc push
ghcr.io/you/hello:0.1
→ any OCI registry
AWS Bedrock
arc run …hello:0.1
--backend bedrock --dry-run
→ CreateAgentRuntime JSON
Kubernetes
arc run …hello:0.1
--backend kubernetes --dry-run
→ deploy manifests
ai.agentrc.* labels natively. Not production runners.The separation agentrc creates
| Concern | Defined by | Read / enforced by | Why it matters |
|---|---|---|---|
| Agent identity, capabilities, objective | IDENTITY / CAPABILITY / SOP | agent author | Clear purpose and scope |
| Tools, skills, MCP servers | COPY / ADD --remote into /mnt | compiler → layers + labels | Portable across stacks |
| Resource, model, network, lifecycle requests | POLICY (typed namespaces) | platform (grant / narrow / reject) | Governed and reviewable |
| Enforcement | typed requests compiled to Cedar | platform (deny-by-default, forbid > permit) | Least privilege by design |
| Packaging and sharing | OCI artifact + ai.agentrc.* labels | any OCI registry | Interoperable distribution |
| Execution substrate | run-time choice (arc run --backend) | local, container, microVM, cloud runners | Freedom with guardrails |
Current draft
The project is published as a standards-style repository: specification first, reference tooling second.