Skip to main content

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:

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 Space for voice commands
  • Keyboard shortcuts: Cmd+N new agent, 1-9 focus agent, Cmd+Shift+A approve

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ashlar_ao-1.0.0.tar.gz (500.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ashlar_ao-1.0.0-py3-none-any.whl (428.8 kB view details)

Uploaded Python 3

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

Hashes for ashlar_ao-1.0.0.tar.gz
Algorithm Hash digest
SHA256 f31191a2eadc1b21686694b4de0ab88217348b0619a2bfaec5d025adee077aad
MD5 6509a604b0a264dec4203f814ae4eb81
BLAKE2b-256 d66e4a03b1c813e6a577c22f0ba88d6a01ca9eb93254d7d80f8ecec776544426

See more details on using hashes here.

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

Hashes for ashlar_ao-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bb97018cc316ebc610a155c50af51598b676622dbd7e6e5b089530864bc913d7
MD5 2f403b8e2867fc87a8f98c33bcc32c37
BLAKE2b-256 640b4dff907640ca64dacdcb2d2890fd1887c7a65d06273081b303cd8502af3d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page