Installation & Setup
Get Ashlr AO running and spawn your first AI coding agent in under 30 seconds.
Prerequisites
Before installing Ashlr AO, make sure you have the following:
- Python 3.11+ — Check with
python3 --version - tmux — Terminal multiplexer for agent session isolation. Install with
brew install tmux(macOS) orapt install tmux(Linux) - At least one AI coding agent backend:
- Claude Code —
npm install -g @anthropic-ai/claude-code - Codex —
npm install -g @openai/codex - Aider —
pip install aider-chat - Goose —
pip install goose-ai
- Claude Code —
Tip: Claude Code is the recommended backend. It supports plan mode, model selection, tool restriction, and stream-json output mode.
Install via pip
The fastest way to get started:
pip install ashlr-ao
ashlr
This installs the ashlr CLI command. Running it starts the server and opens the dashboard at http://127.0.0.1:5111.
CLI Options
ashlr # Start with defaults
ashlr --port 8080 # Custom port
ashlr --host 0.0.0.0 # Bind to all interfaces
ashlr --demo # Demo mode (no real agents)
ashlr --log-level DEBUG # Verbose logging
ashlr --version # Print version and exit
Install from Source
Clone the repository and use the included start script:
git clone https://github.com/ashlrai/ashlr-ao.git
cd ashlr-ao
./start.sh
The start.sh script creates a virtual environment, runs pip install -e ., verifies tmux and backends are available, and starts the server.
Install with Docker
For containerized deployments:
git clone https://github.com/ashlrai/ashlr-ao.git
cd ashlr-ao
docker compose up -d
See the Deployment guide for full Docker + HTTPS configuration with Caddy.
First Run
On first launch, Ashlr AO automatically:
- Creates the config directory at
~/.ashlr/ - Generates a default
ashlr.yamlconfig file - Creates the SQLite database at
~/.ashlr/ashlr.db - Cleans up any orphaned tmux sessions from prior crashes
- Starts the aiohttp server on port 5111
- Opens the dashboard in your default browser
Spawning Your First Agent
From the Dashboard
- Open the dashboard at http://127.0.0.1:5111
- Press Cmd+N or click the + card to open the spawn dialog
- Choose a role (e.g., Backend Engineer)
- Select a backend (e.g., claude-code)
- Enter the working directory path to your project (e.g.,
~/Projects/my-app) - Type a task description (e.g., "Add input validation to the user registration endpoint")
- Click Spawn
The agent card appears in the grid immediately. Status updates from planning to working to idle as the agent progresses.
From the Command Bar
Press Cmd+K to open the command palette, then type a natural language command:
spawn backend agent on ~/Projects/my-app to add input validation
If you have the intelligence layer enabled (requires XAI_API_KEY), Ashlr parses natural language into structured commands automatically.
From the REST API
curl -X POST http://127.0.0.1:5111/api/agents \
-H "Content-Type: application/json" \
-d '{
"role": "backend",
"task": "Add input validation to the user registration endpoint",
"working_dir": "~/Projects/my-app",
"backend": "claude-code"
}'
Quick Templates
The spawn dialog includes quick templates for common tasks:
- Code Review — Review code for bugs, style issues, and improvements
- Tests — Write comprehensive test coverage
- Bug Fix — Investigate and fix a reported bug
- Feature — Implement a new feature
- Security — Run a security audit
- Refactor — Refactor code for clarity and performance
Fleet Presets (Pro)
Spawn multiple agents at once with fleet presets:
- Full Stack — Frontend + Backend + Tester agents
- Review Team — Reviewer + Security Auditor agents
- Quality Check — Tester + Reviewer + Docs agents
Dashboard Overview
Agent Card Grid
The main view shows a grid of agent cards. Each card displays:
- Role icon and color
- Agent name and project
- Git branch badge
- Live summary text
- Status badge (planning, working, waiting, error, idle)
Click any card to open the deep view with full terminal output, activity feed, and scratchpad.
Interacting with Agents
When an agent needs input (status: waiting), the card highlights with an orange attention indicator. Click the card or press Cmd+Shift+A to open the attention queue. Interaction options include:
- Approve (keyboard: A or Y) — Accept the agent's proposal
- Reject (keyboard: R or N) — Decline and provide alternative direction
- Custom response — Type any message to send to the agent's stdin
Filtering and Search
Use the toolbar above the card grid to filter agents by:
- Project — Dropdown selector
- Branch — Dropdown selector
- Status — Clickable status chips
- Text search — Cmd+/ for global search
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
| Cmd+K | Command palette |
| Cmd+N | New agent |
| Cmd+, | Settings |
| Cmd+Shift+S | Toggle bulk select mode |
| Cmd+Shift+A | Attention queue (waiting agents) |
| Cmd+Shift+F | Focus mode (single project) |
| Cmd+/ | Global search |
| 1–9 | Focus agent or select role |
| Escape | Close overlay / back to grid |
| Space (hold) | Push-to-talk voice input |
Enabling the Intelligence Layer
The intelligence layer provides LLM-powered agent summaries, natural language command parsing, and fleet analysis. It requires an xAI API key:
export XAI_API_KEY="your-xai-api-key"
ashlr
When enabled, Ashlr uses xAI Grok (via OpenAI-compatible API) to:
- Generate 1-line agent status summaries from terminal output
- Parse natural language commands into structured intents
- Run fleet analysis every 30 seconds (conflict detection, stuck agent identification, handoff opportunities)
The intelligence layer includes a circuit breaker: after 5 consecutive failures, it enters a 60-second cooldown. When the LLM is unavailable, Ashlr falls back to regex-based parsing.
Adding Projects
Projects group agents by repository. To add a project:
curl -X POST http://127.0.0.1:5111/api/projects \
-H "Content-Type: application/json" \
-d '{
"name": "my-app",
"path": "~/Projects/my-app"
}'
Or use the dashboard: open Settings (Cmd+,) and add projects from the Projects section. Ashlr auto-detects git remote URL, default branch, and other metadata.
Security note: Working directories are restricted to paths under ~/ or /tmp. Use symlinks if your repos are elsewhere.
Next Steps
- Configure backends, auto-pilot, and display settings
- Explore the API for programmatic control
- Deploy with Docker and HTTPS for team use
- Download the desktop app for native macOS integration