Skip to main content

Getting Started with Aragora

Last Updated: 2026-01-27

Aragora is the control plane for multi-agent vetted decisionmaking across organizational knowledge and channels. It orchestrates diverse AI models to debate your data and deliver defensible decisions wherever your team works. This is the canonical onboarding guide.

Choose your path:


Quick Start

1. Install

git clone https://github.com/an0mium/aragora.git
cd aragora
pip install -e .

2. Configure (Choose One)

The easiest way to configure Aragora:

aragora setup

The wizard guides you through:

  • API key configuration with validation
  • Server port settings
  • Database selection (SQLite/PostgreSQL)
  • Optional integrations (Slack, GitHub, Telegram)

See the CLI Setup Guide for detailed options.

Option B: Manual Configuration

Create a .env file with at least one AI provider key:

cp .env.starter .env

Edit .env (or use .env.example for the full template):

# Required: At least one of these
ANTHROPIC_API_KEY=sk-ant-xxx # Claude (recommended)
OPENAI_API_KEY=sk-xxx # GPT-4
GEMINI_API_KEY=AIzaSy... # Gemini
XAI_API_KEY=xai-xxx # Grok
MISTRAL_API_KEY=xxx # Mistral (optional)
OPENROUTER_API_KEY=sk-or-xxx # OpenRouter (optional)

Optional but recommended: keep runtime data out of the repo root.

ARAGORA_DATA_DIR=.nomic

3. Verify Setup

aragora doctor

Expected output:

Aragora Health Check
====================
API Keys:
Anthropic: OK
OpenAI: OK
Gemini: Not configured
Grok: Not configured

Environment:
Python: 3.10.13
aragora: 2.6.3

Status: Ready

Optional: run the golden-path harness (offline, demo agents).

python scripts/golden_paths.py --mode fast
python scripts/golden_paths.py --mode fast --enable-trending # optional network context

Sample artifacts live in examples/golden_paths/demo.

4. Run Your First Stress-Test

aragora ask "Should we use microservices or monolith?" \
--agents anthropic-api,openai-api

Expected output:

DEBATE: Should we use microservices or monolith?
Agents: anthropic-api, openai-api
Round 1/3...
[anthropic-api] Proposing...
[openai-api] Critiquing...
...
CONSENSUS REACHED (75% agreement)
Final Answer: [synthesized recommendation]

CLI User Guide

Basic Usage

aragora ask "<your question>" --agents <agent1>,<agent2>

Note: the CLI default is codex,claude (local CLI agents). If you only have API keys, use --agents anthropic-api,openai-api or another API-backed set.

Available Agents

AgentProviderAPI Key Required
anthropic-apiClaude (Anthropic)ANTHROPIC_API_KEY
openai-apiOpenAIOPENAI_API_KEY
geminiGoogle GeminiGEMINI_API_KEY
grokxAI GrokXAI_API_KEY
mistral-apiMistral (direct)MISTRAL_API_KEY
codestralMistral (code)MISTRAL_API_KEY
deepseekOpenRouterOPENROUTER_API_KEY
qwen / qwen-maxOpenRouterOPENROUTER_API_KEY
kimiMoonshot (Kimi)KIMI_API_KEY
ollamaLocal modelsNone (local)

Note: OpenRouter agents require OPENROUTER_API_KEY. Full catalog is in AGENTS.md.

Common Options

# More rounds (deeper debate)
aragora ask "..." --rounds 5

# Consensus mode
aragora ask "..." --consensus majority # 60% agreement (default)
aragora ask "..." --consensus unanimous # All agents agree
aragora ask "..." --consensus judge # One agent decides

# Add context
aragora ask "..." --context "Consider latency and cost"

# Verbose output
aragora ask "..." --verbose

Example Debates

# Architecture decision
aragora ask "Design a caching strategy for 10M users" \
--agents anthropic-api,openai-api,gemini --rounds 4

# Code review
aragora ask "Review this code for security issues: $(cat myfile.py)" \
--agents anthropic-api,openai-api --consensus unanimous

# Framework comparison
aragora ask "React vs Vue vs Svelte for our new project" \
--agents anthropic-api,openai-api,gemini,grok

Code Review

Review pull requests with unanimous AI consensus:

# Review local changes
git diff main | aragora review

# Review GitHub PR
aragora review https://github.com/owner/repo/pull/123

# Demo mode (no API keys)
aragora review --demo

Vertical Specialists

Industry-specific debate templates with pre-configured agents, tools, and compliance frameworks:

# List available verticals
aragora verticals list

# Filter by keyword
aragora verticals list --keyword healthcare

# Get vertical configuration
aragora verticals get healthcare

# List tools for a vertical
aragora verticals tools fintech

# Show compliance frameworks
aragora verticals compliance healthcare

# Suggest vertical for a task
aragora verticals suggest --task "Analyze HIPAA compliance for patient portal"

Available verticals include: healthcare, fintech, legal, devops, security, and more.

Memory Operations

Inspect and manage the multi-tier memory system:

# Query memories by prefix
aragora memory query "debate:arch:"

# Store a memory entry
aragora memory store "custom:key" "value data" --tier medium

# View memory statistics
aragora memory stats

# Promote memory to a longer-lived tier
aragora memory promote "key" --to slow

Memory tiers: fast (1 min TTL), medium (1 hour), slow (1 day), glacial (1 week).

Knowledge Mound

Query and manage the unified knowledge store:

# Query knowledge by prefix
aragora km query "consensus:"

# Store knowledge entry
aragora km store "insights:arch:caching" '{"pattern": "write-through"}'

# View knowledge statistics
aragora km stats

# List knowledge by category
aragora km query "evidence:" --limit 10

Start Dashboard

aragora serve
# Open http://localhost:8080

API Integrator Guide

Start the Server

aragora serve --api-port 8080 --ws-port 8765

Core Endpoints

EndpointMethodDescription
/api/debatesPOSTStart a new debate
/api/debates/\{id\}GETGet debate status/results
/api/debatesGETList recent debates
/api/agentsGETList available agents
/api/healthGETHealth check

Start a Debate

curl -X POST http://localhost:8080/api/debates \
-H "Content-Type: application/json" \
-d '{
"task": "Should we use microservices or monolith?",
"agents": ["anthropic-api", "openai-api"],
"rounds": 3,
"consensus": "majority"
}'

Response:

{
"debate_id": "debate-20260111-abc123",
"status": "running",
"task": "Should we use microservices or monolith?"
}

Get Debate Results

curl http://localhost:8080/api/debates/debate-20260111-abc123

Response:

{
"debate_id": "debate-20260111-abc123",
"status": "completed",
"task": "Should we use microservices or monolith?",
"consensus": {
"reached": true,
"agreement": 0.75,
"final_answer": "..."
},
"rounds": [...],
"participants": ["anthropic-api", "openai-api"]
}

WebSocket Streaming

For real-time debate updates:

const ws = new WebSocket('ws://localhost:8765/ws');
const loopId = 'debate-20260111-abc123';

ws.onmessage = (event) => {
const data = JSON.parse(event.data);
if (['connection_info', 'loop_list', 'sync'].includes(data.type)) return;

const eventLoopId = data.loop_id || data.data?.debate_id || data.data?.loop_id;
if (eventLoopId && eventLoopId !== loopId) return;

console.log(data.type, data.data);
// Types: debate_start, agent_message, critique, vote, consensus, debate_end
};

Authentication

For protected endpoints, use Bearer token:

curl http://localhost:8080/api/protected \
-H "Authorization: Bearer YOUR_TOKEN"

Generate a token:

curl -X POST http://localhost:8080/api/auth/token \
-H "Content-Type: application/json" \
-d '{"username": "user", "password": "pass"}'

Full API Reference

See API_REFERENCE.md for the full endpoint catalog.


Gauntlet Guide

The Gauntlet stress-tests documents, policies, and code using 12+ AI agents simulating hackers, regulators, and critics.

Quick Demo

Run with simulated agents (no API keys needed):

python examples/gauntlet_demo.py

Stress-Test Your Documents

# CLI usage
aragora gauntlet my_policy.md --persona gdpr

# With specific profile
aragora gauntlet my_spec.md --profile thorough

# Code security review
aragora gauntlet src/auth.py --profile code

Gauntlet Profiles

ProfileDurationBest For
quick2 minFast validation
default5 minBalanced analysis
thorough15 minComprehensive review
code10 minSecurity-focused code
policy10 minCompliance-focused

Regulatory Personas

PersonaFocus
gdprGDPR compliance (consent, data rights, transfers)
hipaaHIPAA compliance (PHI, safeguards, breach)
ai_actEU AI Act (risk levels, transparency, bias)
securitySecurity vulnerabilities (injection, auth, crypto)
soc2SOC 2 controls (security, availability)
pci_dssPCI DSS (cardholder data, encryption)

Gauntlet via API

# Start a gauntlet run
curl -X POST http://localhost:8080/api/gauntlet/run \
-H "Content-Type: application/json" \
-d '{
"input_content": "Your policy content here...",
"input_type": "policy",
"persona": "gdpr",
"profile": "default"
}'

# Get status
curl http://localhost:8080/api/gauntlet/\{id\}

# Get Decision Receipt
curl http://localhost:8080/api/gauntlet/\{id\}/receipt?format=html

# Get Risk Heatmap
curl http://localhost:8080/api/gauntlet/\{id\}/heatmap?format=svg

Understanding Results

The Decision Receipt contains:

  • Verdict: APPROVED, APPROVED_WITH_CONDITIONS, NEEDS_REVIEW, or REJECTED
  • Risk Score: 0-100% risk assessment
  • Findings: Issues categorized by severity (Critical, High, Medium, Low)
  • Mitigations: Recommended fixes for each finding
  • Audit Trail: Full evidence chain for compliance

Troubleshooting

"No API key found"

Error: No API key configured for anthropic-api

Solution: Set at least one key in .env or environment:

export ANTHROPIC_API_KEY=your-key
# Or add to .env file

Verify: Run aragora doctor to check configuration.

"Agent timed out"

Error: Agent anthropic-api timed out after 60s

Cause: API provider is slow or overloaded.

Solutions:

  1. Increase timeout:
    export ARAGORA_DEBATE_TIMEOUT=1200  # seconds
  2. Use fewer agents
  3. Try a different provider

"Rate limit exceeded"

Error: Rate limit exceeded for openai-api

Solutions:

  1. Wait 60 seconds and retry
  2. Use fewer agents
  3. Use fallback providers:
    # OpenRouter provides fallback access
    export OPENROUTER_API_KEY=sk-or-xxx

"Connection refused on port 8080"

Error: Connection refused on localhost:8080

Cause: Server not running or port in use.

Solutions:

  1. Start the server:
    aragora serve
  2. Use a different port:
    aragora serve --api-port 8081
  3. Check what's using the port:
    lsof -i :8080

"Invalid API key"

Error: Invalid API key for anthropic-api

Cause: API key is malformed or expired.

Solutions:

  1. Verify the key format:
    • Anthropic: sk-ant-api03-...
    • OpenAI: sk-...
    • Gemini: AIzaSy...
  2. Regenerate the key in your provider dashboard
  3. Check for extra whitespace in .env

"Module not found"

Error: ModuleNotFoundError: No module named 'aragora'

Solution: Install in development mode:

pip install -e .

Still stuck?

  1. Run diagnostics: aragora doctor
  2. Check logs: tail -f ~/.aragora/logs/aragora.log
  3. File an issue: https://github.com/an0mium/aragora/issues

Next Steps


Quick Reference

CLI Commands

CommandDescription
aragora ask "..."Run a debate
aragora reviewReview code/PR
aragora gauntletStress-test documents
aragora serveStart dashboard
aragora doctorCheck health
aragora statusShow environment
aragora configManage settings
aragora verticalsIndustry-specific debate templates
aragora memoryMemory tier operations
aragora kmKnowledge Mound operations

Environment Variables

Quick Reference (see ENVIRONMENT.md for complete reference):

VariableDescriptionRequired
ANTHROPIC_API_KEYClaude API keyAt least one
OPENAI_API_KEYGPT-4 API keyAt least one
GEMINI_API_KEYGemini API keyOptional
XAI_API_KEYGrok API keyOptional
MISTRAL_API_KEYMistral API keyOptional
OPENROUTER_API_KEYFallback providerRecommended

Configuration Templates:

  • .env.starter - Minimal config to get started
  • .env.example - Full configuration reference

Health Endpoints

EndpointDescription
/healthzKubernetes liveness probe
/readyzKubernetes readiness probe
/api/healthComprehensive health check
/api/health/detailedDetailed component status