Complete setup guide for building and running goal-driven agents with the Aden Agent Framework.
# Run the automated setup script
./quickstart.shNote for Windows Users: Native Windows is supported via
quickstart.ps1. Run it in PowerShell 5.1+. Disable "App Execution Aliases" in Windows settings to avoid Python path conflicts.
This will:
- Check Python version (requires 3.11+)
- Install the core framework package (
framework) - Install the tools package (
aden_tools) - Initialize encrypted credential store (
~/.hive/credentials) - Configure default LLM provider
- Fix package compatibility issues (openai + litellm)
- Verify all installations
Native Windows is supported. Run the PowerShell quickstart:
.\quickstart.ps1Alternatively, you can use WSL:
- Install WSL 2:
wsl --install - Open your WSL terminal, clone the repo, and run:
./quickstart.sh
If you are using Alpine Linux (e.g., inside a Docker container), you must install system dependencies and use a virtual environment before running the setup script:
- Install System Dependencies:
apk update
apk add bash git python3 py3-pip nodejs npm curl build-base python3-dev linux-headers libffi-dev- Set up Virtual Environment (Required for Python 3.12+):
uv venv
source .venv/bin/activate
# uv handles pip/setuptools/wheel automatically
- Run the Quickstart Script:
./quickstart.sh
- Minimum: Python 3.11
- Recommended: Python 3.11 or 3.12
- Tested on: Python 3.11, 3.12, 3.13
- pip (latest version)
- 2GB+ RAM
- Internet connection (for LLM API calls)
- For Windows users: PowerShell 5.1+ (native) or WSL 2.
We recommend using quickstart.sh for LLM API credential setup and the credentials UI/tooling for tool credentials.
Build and run an agent using Claude Code CLI with the agent building skills:
./quickstart.shThis sets up the MCP tools and workflows for building agents.
MCP tools are also available in Cursor. To enable:
- Open Command Palette (
Cmd+Shift+P/Ctrl+Shift+P) - Run
MCP: Enableto enable MCP servers - Restart Cursor to load the MCP servers from
.cursor/mcp.json - Open Agent chat and verify MCP tools are available
Claude Code:
Use the coder-tools initialize_and_build_agent tool to scaffold a new agent
Codex CLI:
Start Codex in the repo root and use the configured MCP tools
Follow the prompts to:
- Define your agent's goal
- Design the workflow nodes
- Connect nodes with edges
- Generate the agent package under
exports/
This step creates the initial agent structure required for further development.
claude> architecture guidance
Follow the prompts to:
- Understand the agent architecture and file structure
- Define the agent's goal, success criteria, and constraints
- Learn node types (event_loop only)
- Discover and validate available tools before use
This step establishes the core concepts and rules needed before building an agent.
Cause: Python 3.12+ on macOS/Homebrew, WSL, or some Linux distros prevents system-wide pip installs.
Solution: Create and use a virtual environment:
# Create virtual environment
uv venv
# Activate it
source .venv/bin/activate # macOS/Linux
# .venv\Scripts\activate # Windows
# Then run setup
./quickstart.shAlways activate the venv before running agents:
source .venv/bin/activate
PYTHONPATH=exports uv run python -m your_agent_name demoRun once per session:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy BypassSolution: Sync the workspace dependencies:
# From repository root
uv syncSolution: Sync the workspace dependencies:
# From repository root
uv syncOr run the setup script:
./quickstart.shCause: Outdated openai package (0.27.x) incompatible with litellm
Solution: Upgrade openai:
uv pip install --upgrade "openai>=1.0.0"Cause: Not running from project root, missing PYTHONPATH, or agent not yet created
Solution: Ensure you're in /hive/ and use:
Linux/macOS:
PYTHONPATH=exports uv run python -m your_agent_name validateWindows:
$env:PYTHONPATH="core;exports"
python -m support_ticket_agent validateSymptom: pip list shows packages pointing to non-existent directories
Solution: Reinstall packages properly:
# Remove broken installations
uv pip uninstall framework tools
# Reinstall correctly
./quickstart.shThe Hive framework consists of three Python packages:
hive/
├── .venv/ # Single workspace venv (created by uv sync)
├── core/ # Core framework (runtime, graph executor, LLM providers)
│ ├── framework/
│ └── pyproject.toml
│
├── tools/ # Tools and MCP servers
│ ├── src/
│ │ └── aden_tools/ # Actual package location
│ └── pyproject.toml
│
├── exports/ # Agent packages (user-created, gitignored)
│ └── your_agent_name/ # Created via coder-tools workflow
│
└── examples/
└── templates/ # Pre-built template agents
Hive uses uv workspaces to manage dependencies. When you run uv sync from the repository root, a single .venv is created at the root containing both packages.
- Single environment - No need to switch between multiple venvs
- Unified dependencies - Consistent package versions across core and tools
- Simpler development - One activation, access to everything
When you run ./quickstart.sh or uv sync:
- /.venv/ - Single root virtual environment is created
- Both
framework(from core/) andaden_tools(from tools/) are installed - All dependencies (anthropic, litellm, beautifulsoup4, pandas, etc.) are resolved together
If you need to refresh the environment:
# From repository root
uv syncThe core and tools packages are intentionally independent:
- No cross-imports:
frameworkdoes not importaden_toolsdirectly, and vice versa - Communication via MCP: Tools are exposed to agents through MCP servers, not direct Python imports
- Runtime integration: The agent runner loads tools via the MCP protocol at runtime
If you need to use both packages in a single script (e.g., for testing), prefer uv run with PYTHONPATH:
PYTHONPATH=tools/src uv run python your_script.pyThe .mcp.json at project root configures MCP servers to run through uv run in each package directory:
{
"mcpServers": {
"coder-tools": {
"command": "uv",
"args": ["run", "coder_tools_server.py", "--stdio"],
"cwd": "tools"
},
"tools": {
"command": "uv",
"args": ["run", "mcp_server.py", "--stdio"],
"cwd": "tools"
}
}
}This ensures each MCP server runs with the correct project environment managed by uv.
The packages are installed in editable mode (uv pip install -e), which means:
frameworkandaden_toolsare globally importable (no PYTHONPATH needed)exportsis NOT installed as a package (PYTHONPATH required)
This design allows agents in exports/ to be:
- Developed independently
- Version controlled separately
- Deployed as standalone packages
./quickstart.shUse the coder-tools initialize_and_build_agent tool
Enter goal: "Build an agent that processes customer support tickets"
PYTHONPATH=exports uv run python -m your_agent_name validateclaude> test workflow
# Interactive dashboard
hive tui
# Or run directly
hive run exports/your_agent_name --input '{"task": "..."}'The repository includes a suite of dummy agents under core/tests/dummy_agents/ for end-to-end testing against real LLM providers. These are not part of CI — they make real API calls and are meant to be run manually to verify the executor works correctly.
cd core && uv run python tests/dummy_agents/run_all.pyThe script auto-detects available LLM credentials and prompts you to pick a provider. You need at least one of:
ANTHROPIC_API_KEYOPENAI_API_KEYGEMINI_API_KEYZAI_API_KEY- A Claude Code, Codex, or Kimi subscription
For verbose output with live LLM logs, tool calls, and node traversal details:
cd core && uv run python tests/dummy_agents/run_all.py --verbose| Agent | Tests | Coverage |
|---|---|---|
| echo | 2 | Single-node lifecycle, basic set_output |
| pipeline | 4 | Multi-node traversal, input_mapping, conversation modes |
| branch | 3 | Conditional edges, LLM-driven routing |
| parallel_merge | 4 | Fan-out/fan-in, failure strategies |
| retry | 4 | Retry mechanics, exhaustion, ON_FAILURE edges |
| feedback_loop | 3 | Feedback cycles, max_node_visits |
| worker | 4 | Real MCP tools (example_tool, get_current_time, save_data/load_data) |
Typical runtime is 1–3 minutes depending on provider latency.
You can also run a specific dummy agent test with pytest directly:
cd core && uv run pytest tests/dummy_agents/test_echo.py -vNote: Individual pytest runs require the LLM provider to be configured via the
conftest.pyfixture. Therun_all.pyscript handles this automatically.
export ANTHROPIC_API_KEY="sk-ant-..."
export OPENROUTER_API_KEY="your-openrouter-key" # Optional
export HIVE_API_KEY="your-hive-key" # OptionalQuickstart also supports selecting OpenRouter and Hive LLM interactively. See configuration.md for the full configuration examples.
# Fernet encryption key for credential store at ~/.hive/credentials
export HIVE_CREDENTIAL_KEY="your-fernet-key"
# Agent storage location (default: /tmp)
export AGENT_STORAGE_PATH="/custom/storage"- Issues: https://github.com/adenhq/hive/issues
- Discord: https://discord.com/invite/MXE49hrKDk
- Documentation: https://docs.adenhq.com/