// docs / getting started

Getting Started

Stand up your own adoe instance — the AI-powered L1 on-call agent that ingests monitoring alerts, matches them to SOPs, and remediates automatically. This guide takes you from a fresh clone to a running agent answering health checks.

← back to docs

Prerequisites

1. Clone & configure

# Clone the repository, then copy the environment template
cp .env.example .env

# Edit .env with your credentials
vim .env

2. Environment variables

All configuration is read from environment variables. The essentials:

VariableDescriptionRequired
DATABASE_URLPostgreSQL connection stringYes
ANTHROPIC_API_KEYClaude API key for AI decisionsYes
GITHUB_TOKENGitHub token for Actions & code searchFor GH Actions
GITHUB_ORGDefault GitHub organizationFor GH Actions
AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_REGIONAWS credentials for the SSM executorFor SSM
SLACK_WEBHOOK_URLSlack incoming webhookFor notifications
DRY_RUNIf true, log actions instead of executing themNo (default: false)
CONFIDENCE_THRESHOLDMinimum confidence to auto-executeNo (default: 0.8)
Tip: start with DRY_RUN=true so the agent logs what it would do without touching your infrastructure. Flip it off once you trust your SOPs. See .env.example in the repo for the full list.

3. Run with Docker Compose

# Start all services (app + PostgreSQL)
docker-compose up -d

# Follow the app logs
docker-compose logs -f app

# Confirm it's healthy
curl http://localhost:8000/health

A 200 from /health means the agent is up. The dashboard is served on the same host — open it in a browser and you'll be taken through first-run setup to create your admin account.

4. Point your tools at it

Configure your monitoring systems to POST events to the agent's webhook endpoints:

SourceEndpoint
SplunkPOST http://your-host:8000/webhooks/splunk
SensuPOST http://your-host:8000/webhooks/sensu
PagerDutyPOST http://your-host:8000/webhooks/pagerduty

See the Integration Setup guide for per-tool instructions, auth tokens, and the fields the agent expects from each source.

Local Python dev setup

Prefer to run the app directly?

# Create a virtual environment
python -m venv venv
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt

# Start PostgreSQL (if you're not using Docker)
docker run -d --name postgres \
  -e POSTGRES_USER=l1agent -e POSTGRES_PASSWORD=l1agent -e POSTGRES_DB=l1agent \
  -p 5432:5432 postgres:16-alpine

# Run database migrations
alembic upgrade head

# Start the application with hot reload
uvicorn src.main:app --reload --port 8000

Run the test suite with pytest tests/ -v.

Next steps