Skip to main content

Directed-graph Agent Orchestration Engine

Project description

AgenArc

Directed-Graph Agent Orchestration Engine

PyPI - Version Python License Tests Coverage


Philosophy

"Mechanism and Strategy Separation"

Layer Role
Kernel Ultra-stable scheduler — secure execution, resource validation, VFS sandbox
Self-repair Built by users within the graph flow — evolve agents without touching the engine
Asset boundary agrc:// virtual protocol — files, scripts, and prompts live in isolated bundles

Architecture

 ┌──────────────────────────────────────────────────────────┐
 │                      AgenArc v0.7                        │
 ├──────────────────────────────────────────────────────────┤
 │                                                           │
 │  ┌──────────┐    ┌──────────┐    ┌──────────────────┐    │
 │  │ Protocol │───▶│  Engine  │───▶│  Visualization   │    │
 │  │   (DSL)  │    │ (Runtime)│    │   (Web IDE)      │    │
 │  └──────────┘    └──────────┘    └──────────────────┘    │
 │        │               │                  │               │
 │  ┌─────▼─────┐  ┌──────▼──────┐  ┌───────▼────────┐     │
 │  │JSON Schema│  │  Scheduler  │  │  Graph Editor   │     │
 │  │+ Templates│  │  + Router   │  │  + Live Preview │     │
 │  │+ Conditions│ │  + Join     │  │  + Context Panel│     │
 │  └───────────┘  │  + Checkpoint│ │  + Status LEDs  │     │
 │                 │  + Plugins   │  └────────────────┘     │
 │                 └─────────────┘                          │
 └──────────────────────────────────────────────────────────┘

Features

Category Highlights
Execution Linear & parallel & async modes, Router (conditional branching), Join (branch sync), CheckpointManager
LLM Streaming responses, multi-provider fallback, structured error classification
Scripting Script_Node with AST-safe evaluator (3 trust levels), gas & memory limits
Packaging .agrc self-contained bundles — JSON protocol + prompts + scripts + plugins in one ZIP
VFS agrc:// virtual filesystem with rwx permissions, path-traversal protection
Plugins Python / C++ / External loaders, hot-reload (file watching), event plugins
Visualization Web IDE — graph editor, file tree editor, syntax highlighting, context panel, trace waterfall
SubGraph Embed .agrc bundles as nodes — isolated context, auto port resolution, pack embedding
CLI run / shell / serve / validate / info / pack / visualize / init

Node Types

Node Description Input → Output
SubGraph Embed and execute a nested .agrc bundle as a sub-graph with isolated context auto-resolved from child bundle: trigger outputs → inputs, terminal node outputs → outputs
Trigger Entry point payload → graph
Trigger Entry point payload → graph
LLM_Task LLM inference (streaming + fallback) messagesresponse, usage, error
Router Conditional branching (all matches execute in parallel) input → dynamic output ports
Join Synchronize parallel branches (merge / concat / first) dynamic → output
Memory_I/O Persistent key-value storage (transactional + checkpoint) key, valuevalue, success
Script_Node Inline Python with AST safety (3 trust levels) arbitrary → result
Prompt_Builder Multi-turn conversation history management user / assistantmessages
Log Log and pass-through messagemessage
Context_Set Set global context values key, valuesuccess
Context_Get Read global context values keyvalue
Asset_Reader Read files from bundle via VFS pathcontent, success
Asset_Writer Write files with atomic operations path, contentsuccess
Runtime_Reload Hot reload scripts and plugins at runtime targetsuccess

Quick Start

pip install agenarc
# Run a chat agent
agenarc run examples/my_first_agent.agrc --input '{"payload":"Hello!"}'

# Interactive REPL
agenarc shell examples/my_first_agent.agrc

# Background service with plugins
agenarc serve examples/euchea.agrc

# Web-based graph editor
agenarc visualize examples/my_first_agent.agrc

Examples

Agent Description
my_first_agent.agrc Multi-turn chat — Trigger → Prompt_Builder → LLM_Task
qq_bot_agent.agrc QQ bot with event plugin (serve mode)
euchea.agrc PDF → C++ code generation via Alt+A hotkey (serve mode)

.agrc Bundle

my_agent.agrc/
├── manifest.json          # Metadata, permissions, hot_reload
├── flow.json              # Graph definition (nodes + edges)
├── prompts/
│   └── system.pt          # {{template}} prompt files
├── scripts/
│   └── tool.py            # Custom scripts (optional)
├── sub/                    # Embedded SubGraph bundles (auto-packed)
│   └── translator.agrc/
│       ├── flow.json
│       └── prompts/
├── plugins/                # Embedded plugins (auto-discovered)
│   └── my_plugin/
│       ├── agenarc.json
│       └── plugin.py
└── assets/                 # Static assets (optional)
Example flow.json
{
  "version": "1.0.0",
  "nodes": [
    { "id": "trigger_1", "type": "Trigger", "label": "Start" },
    {
      "id": "llm_1",
      "type": "LLM_Task",
      "label": "Chat",
      "config": {
        "model": "deepseek-chat",
        "system_prompt": "agrc://prompts/system.pt",
        "stream": true,
        "providers": ["deepseek", "openrouter"]
      }
    },
    { "id": "log_1", "type": "Log", "label": "Output" }
  ],
  "edges": [
    { "source": "trigger_1", "sourcePort": "payload", "target": "llm_1", "targetPort": "messages" },
    { "source": "llm_1", "sourcePort": "response", "target": "log_1", "targetPort": "message" }
  ]
}

SubGraph

An .agrc bundle can be embedded as a node in another graph:

{
  "id": "translator",
  "type": "SubGraph",
  "label": "翻译 Agent",
  "config": { "bundle": "translator.agrc" }
}

SubGraph 端口自动从子图 bundle 解析:

  • 输入端口 = 子图 Trigger 节点的输出端口
  • 输出端口 = 子图终端节点(无出边)的输出端口

Bundle 嵌入

引用 sub/ 目录下的子图会在 agenarc pack 时自动嵌入:

my_agent.agrc/
├── flow.json              # 引用 sub/translator.agrc
├── sub/
│   └── translator.agrc/   # 运行时打包时自动嵌入
│       ├── flow.json
│       └── prompts/

上下文隔离

子图拥有独立的 StateManager,不污染父图上下文。父图可以通过 config.inputs 注入值,通过边连接子图的输出端口获取结果。


Configuration

# ~/.agenarc/config.yaml

providers:
  deepseek:
    api_key: sk-your-key
    base_url: https://api.deepseek.com
    default_model: deepseek-chat
    temperature: 0.7

  openrouter:
    api_key: sk-your-key
    base_url: https://openrouter.ai/api/v1
    default_model: openrouter/free

agent:
  checkpoint_dir: ~/.agenarc
Provider base_url
DeepSeek https://api.deepseek.com
OpenAI https://api.openai.com/v1
OpenRouter https://openrouter.ai/api/v1
Ollama http://localhost:11434/v1

Environment variables override config: AGENARC_OPENAI_API_KEY, AGENARC_OPENAI_BASE_URL, AGENARC_OPENAI_MODEL, AGENARC_ANTHROPIC_API_KEY, AGENARC_ANTHROPIC_MODEL, AGENARC_CHECKPOINT_DIR


Development

agenarc/
├── protocol/           # JSON Schema + protocol loader
├── engine/             # Executor, state manager, AST evaluator
├── operators/          # 13 built-in operators
├── vfs/                # agrc:// virtual filesystem
├── plugins/            # Plugin loader (Python/C++/External)
├── graph/              # Graph data structures + traversal
├── visualization/      # Web IDE server + static frontend
└── cli/                # Command-line interface
# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest tests/                          # All (742 passed)
pytest tests/ --cov=agenarc            # With coverage (~62%)
pytest tests/unit/test_builtin_operators.py -v  # Single file

# Lint & type check
ruff check agenarc/
ruff format --check agenarc/
mypy agenarc/

Documentation

Document Description
CHANGELOG.md Release history and change log
CONTRIBUTING.md Development setup, PR process, commit style
docs/agents.md User-facing agent creation guide (Chinese)
docs/plugins/README.md Plugin development guide

License

MIT © Rycbartbad

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

agenarc-0.7.1.tar.gz (226.4 kB view details)

Uploaded Source

Built Distribution

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

agenarc-0.7.1-py3-none-any.whl (158.2 kB view details)

Uploaded Python 3

File details

Details for the file agenarc-0.7.1.tar.gz.

File metadata

  • Download URL: agenarc-0.7.1.tar.gz
  • Upload date:
  • Size: 226.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agenarc-0.7.1.tar.gz
Algorithm Hash digest
SHA256 d8879cc399af40ee59fc4cc3c2797764727e4eba24a39790798be93eb0984381
MD5 35efed50b01ceebb38eccad04525d1f2
BLAKE2b-256 f3272dcd2b8e5e99f7a59db096edfe9d61af27e267b80f1c8fd33da9a9875a0e

See more details on using hashes here.

Provenance

The following attestation bundles were made for agenarc-0.7.1.tar.gz:

Publisher: publish.yml on Rycbartbad/AgenArc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agenarc-0.7.1-py3-none-any.whl.

File metadata

  • Download URL: agenarc-0.7.1-py3-none-any.whl
  • Upload date:
  • Size: 158.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agenarc-0.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1f61ca7e517562a5d518161d9a2b18386164a6815c9e49bb5d2e9bd1732ddd1c
MD5 24714379a326f79fa337bbaaa096db8a
BLAKE2b-256 61f29dbae9036ca03fc0104a0e39ab514307e49ea8c28113e79136b360123aed

See more details on using hashes here.

Provenance

The following attestation bundles were made for agenarc-0.7.1-py3-none-any.whl:

Publisher: publish.yml on Rycbartbad/AgenArc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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