Skip to main content

Agent Runtime for production — LLM-native execution with tools, budget, and trace built in.

Project description

Arcana

Agent Runtime for Production — Budget, tools, trace, and error recovery. Create once, use everywhere.

面向生产环境的 Agent 运行时 — 预算管控、工具权限、全链路追踪、错误诊断。创建一次,处处复用。


Why Arcana

  • Runtime, not framework — Arcana doesn't tell your LLM how to think. It provides budget, tools, trace, and error recovery as managed services. Your agent decides the strategy.

  • Create once, use everywhereRuntime holds provider connections, tool registry, and budget policy. Reuse across requests, workers, and services.

  • Production defaults — Every run has budget limits, tool authorization, full trace logging, and structured error diagnosis. No configuration needed.


Quick Start

import arcana

# Create runtime (once, at startup)
runtime = arcana.Runtime(
    providers={"deepseek": "sk-xxx"},
    budget=arcana.Budget(max_cost_usd=5.0),
    trace=True,
)

# Run tasks
result = await runtime.run("Analyze this data")
print(result.output)
print(f"Cost: ${result.cost_usd:.4f}, Steps: {result.steps}")

Add Tools

@arcana.tool(when_to_use="For math calculations")
def calc(expression: str) -> str:
    return str(eval(expression))

runtime = arcana.Runtime(
    providers={"deepseek": "sk-xxx"},
    tools=[calc],
)

result = await runtime.run("What is 15 * 37 + 89?")
# Agent calls calc("15 * 37 + 89") → "644"

Integrate with Your Service

from fastapi import FastAPI
import arcana
import os

app = FastAPI()
runtime = arcana.Runtime(
    providers={"deepseek": os.environ["DEEPSEEK_API_KEY"]},
    budget=arcana.Budget(max_cost_usd=1.0),
    trace=True,
)

@app.post("/agent")
async def agent_endpoint(goal: str):
    result = await runtime.run(goal)
    return {"answer": result.output, "cost": result.cost_usd}

What You Get for Free

Capability Description Default
Budget Control Token and cost limits per run On
Tool Authorization Tools need explicit capabilities On
Full Trace Every LLM call and tool invocation logged Opt-in
Error Diagnosis Structured feedback on failures On
Multi-Provider DeepSeek, OpenAI, Anthropic, Kimi, GLM, MiniMax, Ollama Any
Native Tool Use LLM calls tools directly, no wrapper On

Three Layers

Layer 1: SDK                    ← arcana.run() / Runtime.run()
Layer 2: Tool Runtime           ← ToolGateway + MCP (coming soon)
Layer 3: Advanced Orchestration ← Graph / Multi-Agent (when needed)

Most users stay on Layer 1. Layer 2 activates when you add tools. Layer 3 is for complex workflows.


Installation

pip install arcana-agent
pip install arcana-agent[anthropic]        # + Claude support
pip install arcana-agent[all-providers]    # everything

Or from source:

git clone https://github.com/anthropic/arcana.git
cd arcana
uv sync --all-extras

Supported Providers

Provider Models Status
DeepSeek DeepSeek-Chat, DeepSeek-Reasoner Verified
OpenAI GPT-4o, GPT-4o-mini Verified
Anthropic Claude Opus, Sonnet, Haiku Verified
Kimi (月之暗面) Moonshot Supported
GLM (智谱) GLM-4 Supported
MiniMax abab6.5 Supported
Google Gemini Pro, Flash Supported
Ollama Any local model Supported

All cloud providers use the OpenAI-compatible adapter. Adding a new provider is one function call.


The Constitution

"The framework provides capabilities, manages risk, and records execution. The LLM understands goals, forms strategies, and adapts. Never reverse this."

Arcana is governed by a Constitution — four prohibitions (no premature structuring, no controllability theater, no context hoarding, no mechanical retry) and seven design principles. Every design decision answers to this document.


Comparison

Arcana LangChain OpenAI SDK
Type Runtime Framework SDK
Budget control Built-in No No
Tool auth/audit Built-in No No
Trace logging Built-in Paid (LangSmith) No
Error diagnosis Structured Retry No
Create once, reuse Runtime Per-chain Per-call
LLM decides strategy Yes Framework decides Yes

Roadmap

  • Multi-provider gateway (DeepSeek, OpenAI, Anthropic, + 5 more)
  • Budget enforcement and full trace logging
  • Structured error diagnosis
  • Native tool use with authorization
  • Runtime top-level API (in progress)
  • MCP protocol support
  • CLI tool — arcana run agent.yaml
  • Trace Web UI (local LangSmith alternative)
  • Rust core rewrite

Contributing

Before submitting a PR, self-check against the Constitution:

  1. Does it honor the fast path (direct by default)?
  2. Does it add to context only what's needed?
  3. Can the LLM reason about when to use it?
  4. Does it expand what problems the LLM can solve, not constrain how?
  5. Does failure produce something the LLM can act on?
  6. Is it a service the LLM can call, not a step it's forced through?
  7. Does it improve result quality, not just process visibility?

Full details in CONSTITUTION.md.

git clone https://github.com/anthropic/arcana.git
cd arcana
uv sync --all-extras

uv run ruff check .         # Lint
uv run mypy src/            # Type check
uv run pytest               # Test
uv run pytest --cov=arcana  # Coverage

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

arcana_agent-0.1.0b1.tar.gz (545.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

arcana_agent-0.1.0b1-py3-none-any.whl (225.2 kB view details)

Uploaded Python 3

File details

Details for the file arcana_agent-0.1.0b1.tar.gz.

File metadata

  • Download URL: arcana_agent-0.1.0b1.tar.gz
  • Upload date:
  • Size: 545.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0

File hashes

Hashes for arcana_agent-0.1.0b1.tar.gz
Algorithm Hash digest
SHA256 7446a25865680c59da31fc5a1bafa43be2f0d080929088b101104d02e80f7514
MD5 bae54e1012739872f488619441ab96eb
BLAKE2b-256 3f4ff37c48e6a2bc1c246a325f3b63f7dbd9ddc86768b5fc20a6aacb945819f9

See more details on using hashes here.

File details

Details for the file arcana_agent-0.1.0b1-py3-none-any.whl.

File metadata

  • Download URL: arcana_agent-0.1.0b1-py3-none-any.whl
  • Upload date:
  • Size: 225.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0

File hashes

Hashes for arcana_agent-0.1.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 ec890339260e8519fde79fa0396e71a1a9b5919a56375a4afe6c7d19a303aeb8
MD5 560b3127d87a7ced5d9180969add0faf
BLAKE2b-256 af3ac94b5e981b7118276a6508f5905b62d9280f004fae46cd9d400fbe5515ae

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page