Local-first agent orchestration platform — one developer, many AI coding agents, single command center.
Project description
Ashlar AO
A local-first agent orchestration platform. Manage multiple AI coding agents (Claude Code, Codex, etc.) across projects from a single browser-based command center.
Spawn agents, monitor their status in real time, approve plans, respond to questions, and coordinate work — all without switching terminals.
Installation
pip install ashlar-ao
Then run:
ashlar
Prerequisites
- Python 3.11+
- tmux — used for agent process isolation and output capture
- At least one agent backend CLI:
- Claude Code:
npm i -g @anthropic-ai/claude-code - Codex:
npm i -g @openai/codex
- Claude Code:
If no backend is installed, agents run in demo mode.
Install tmux
# macOS
brew install tmux
# Linux
sudo apt install tmux
Quick Start (from source)
./start.sh
The launch script handles everything: checks dependencies, creates a Python virtual environment, installs the package in editable mode, and starts the server.
Open http://127.0.0.1:5111 in your browser.
Port Conflicts
Port 5000 conflicts with macOS AirPlay Receiver. Ashlar defaults to port 5111 to avoid this. To use a different port:
ASHLAR_PORT=8080 ashlar
Configuration
Config lives at ~/.ashlar/ashlar.yaml (auto-created on first run). Defaults work out of the box.
Optional Environment Variables
| Variable | Purpose |
|---|---|
ASHLAR_PORT |
Override server port (default: 5111) |
XAI_API_KEY |
Enable LLM-powered agent summaries via xAI Grok |
Architecture
Two files make up the core application, packaged as ashlar_ao:
ashlar_ao/server.py— Python aiohttp server. Manages agents via tmux, serves the dashboard, provides REST + WebSocket APIs, collects system metrics.ashlar_ao/dashboard.html— Single HTML file with all CSS and JS inline. No build step, no bundler, no node_modules.
Data is persisted in SQLite at ~/.ashlar/ashlar.db.
Usage
- Spawn agents from the dashboard or command palette (
Cmd+K) - Monitor status via live-updating cards (planning, working, waiting, error)
- Respond to agents inline when they need input
- Push-to-talk with
Spacefor voice commands - Keyboard shortcuts:
Cmd+Nnew agent,1-9focus agent,Cmd+Shift+Aapprove
Development
git clone https://github.com/masonwyatt/ashlar-ao.git
cd ashlar-ao
pip install -e ".[dev]"
pytest
See CLAUDE.md for full architecture, data models, API reference, and implementation details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ashlar_ao-1.0.0.tar.gz.
File metadata
- Download URL: ashlar_ao-1.0.0.tar.gz
- Upload date:
- Size: 500.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f31191a2eadc1b21686694b4de0ab88217348b0619a2bfaec5d025adee077aad
|
|
| MD5 |
6509a604b0a264dec4203f814ae4eb81
|
|
| BLAKE2b-256 |
d66e4a03b1c813e6a577c22f0ba88d6a01ca9eb93254d7d80f8ecec776544426
|
File details
Details for the file ashlar_ao-1.0.0-py3-none-any.whl.
File metadata
- Download URL: ashlar_ao-1.0.0-py3-none-any.whl
- Upload date:
- Size: 428.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bb97018cc316ebc610a155c50af51598b676622dbd7e6e5b089530864bc913d7
|
|
| MD5 |
2f403b8e2867fc87a8f98c33bcc32c37
|
|
| BLAKE2b-256 |
640b4dff907640ca64dacdcb2d2890fd1887c7a65d06273081b303cd8502af3d
|