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.
Metadata
Release files for ashlar-ao 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ashlar_ao-1.0.0.tar.gz | 500.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ashlar_ao-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 928.8 kB
Release files / ashlar_ao-1.0.0.tar.gz
| Download URL | ashlar_ao-1.0.0.tar.gz |
|---|---|
| Size | 500.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f31191a2eadc1b21686694b4de0ab88217348b0619a2bfaec5d025adee077aad
|
|
BLAKE2b-256 checksum How to use checksums |
d66e4a03b1c813e6a577c22f0ba88d6a01ca9eb93254d7d80f8ecec776544426
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.1
|
Release files / ashlar_ao-1.0.0-py3-none-any.whl
| Download URL | ashlar_ao-1.0.0-py3-none-any.whl |
|---|---|
| Size | 428.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bb97018cc316ebc610a155c50af51598b676622dbd7e6e5b089530864bc913d7
|
|
BLAKE2b-256 checksum How to use checksums |
640b4dff907640ca64dacdcb2d2890fd1887c7a65d06273081b303cd8502af3d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.1
|
Security for ashlar-ao 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.