{"id":40223094,"url":"https://github.com/andyrewlee/amux","last_synced_at":"2026-03-11T00:05:22.606Z","repository":{"id":331442908,"uuid":"1125585925","full_name":"andyrewlee/amux","owner":"andyrewlee","description":"TUI for easily running parallel coding agents","archived":false,"fork":false,"pushed_at":"2026-03-07T22:46:17.000Z","size":2348,"stargazers_count":42,"open_issues_count":5,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-08T04:10:44.914Z","etag":null,"topics":["agent-coordination","agent-orchestration","agent-swarm","ai-orchestration","conductor","git-worktree","parallel-agents","parallelexecution","terminal-ui","tui","worktree","worktrees"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andyrewlee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-31T01:57:28.000Z","updated_at":"2026-03-07T14:42:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/andyrewlee/amux","commit_stats":null,"previous_names":["andyrewlee/amux"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/andyrewlee/amux","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyrewlee%2Famux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyrewlee%2Famux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyrewlee%2Famux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyrewlee%2Famux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andyrewlee","download_url":"https://codeload.github.com/andyrewlee/amux/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andyrewlee%2Famux/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30279768,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-08T20:45:49.896Z","status":"ssl_error","status_checked_at":"2026-03-08T20:45:49.525Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-coordination","agent-orchestration","agent-swarm","ai-orchestration","conductor","git-worktree","parallel-agents","parallelexecution","terminal-ui","tui","worktree","worktrees"],"created_at":"2026-01-19T22:09:10.101Z","updated_at":"2026-03-11T00:05:22.574Z","avatar_url":"https://github.com/andyrewlee.png","language":"Go","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg width=\"339\" height=\"105\" alt=\"Screenshot 2026-01-20 at 1 00 23 AM\" src=\"https://github.com/user-attachments/assets/fdbefab9-9f7c-4e08-a423-a436dda3c496\" /\u003e  \n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003eTUI for easily running parallel coding agents\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/andyrewlee/amux/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/andyrewlee/amux?style=flat-square\" alt=\"Latest release\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/andyrewlee/amux?style=flat-square\" alt=\"License\" /\u003e\n  \u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Go-1.24.12-00ADD8?style=flat-square\u0026logo=go\u0026logoColor=white\" alt=\"Go version\" /\u003e\n  \u003ca href=\"https://discord.gg/Dswc7KFPxs\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Discord-5865F2?style=flat-square\u0026logo=discord\u0026logoColor=white\" alt=\"Discord\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#quick-start\"\u003eQuick start\u003c/a\u003e ·\n  \u003ca href=\"#how-it-works\"\u003eHow it works\u003c/a\u003e ·\n  \u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e ·\n  \u003ca href=\"#configuration\"\u003eConfiguration\u003c/a\u003e\n\u003c/p\u003e\n\n![amux TUI preview](https://github.com/user-attachments/assets/f5c4647e-a6ee-4d62-b548-0fdd73714c90)\n\n## What is amux?\n\namux is a terminal UI for running multiple coding agents in parallel with a workspace-first model that can import git worktrees.\n\n## Prerequisites\n\namux requires [tmux](https://github.com/tmux/tmux) (minimum 3.2). Each agent runs in its own tmux session for terminal isolation and persistence.\n\n## Quick start\n\n```bash\nbrew tap andyrewlee/amux\nbrew install amux\n```\n\nOr via the install script:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/andyrewlee/amux/main/install.sh | sh\n```\n\nOr with Go:\n\n```bash\ngo install github.com/andyrewlee/amux/cmd/amux@latest\n```\n\nThen run `amux` to open the dashboard.\n\n## How it works\n\nEach workspace tracks a repo checkout and its metadata. For local workflows, workspaces are typically backed by git worktrees on their own branches so agents work in isolation and you can merge changes back when done.\n\n## Architecture quick tour\n\nStart with `internal/app/ARCHITECTURE.md` for lifecycle, PTY flow, tmux tagging, and persistence invariants. Message boundaries and command discipline are documented in `internal/app/MESSAGE_FLOW.md`.\n\n## Features\n\n- **Parallel agents**: Launch multiple agents within main repo and within workspaces\n- **No wrappers**: Works with Claude Code, Codex, Gemini, Amp, OpenCode, and Droid\n- **Keyboard + mouse**: Can be operated with just the keyboard or with a mouse\n- **All-in-one tool**: Run agents, view diffs, and access terminal\n\n## Configuration\n\n## Platform Support\n\nAMUX requires `tmux` and is supported on Linux/macOS. Windows is not supported.\n\nCreate `.amux/workspaces.json` in your project to run setup commands for new workspaces:\n\n```json\n{\n  \"setup-workspace\": [\n    \"npm install\",\n    \"cp $ROOT_WORKSPACE_PATH/.env.local .env.local\"\n  ]\n}\n```\n\nWorkspace metadata is stored in `~/.amux/workspaces-metadata/\u003cworkspace-id\u003e/workspace.json`, and local worktree directories live under `~/.amux/workspaces/\u003cproject\u003e/\u003cworkspace\u003e`.\n\nAssistant profiles can be configured in `~/.amux/config.json`:\n\n```json\n{\n  \"assistants\": {\n    \"openclaw\": {\n      \"command\": \"openclaw\",\n      \"interrupt_count\": 1,\n      \"interrupt_delay_ms\": 0\n    }\n  }\n}\n```\n\n## Headless CLI for Skills\n\nFor automation and skill-driven control (for example an agent orchestrator), prefer the headless CLI with `--json`.\n\nDiscovery and contract:\n\n```bash\namux --json capabilities\n```\n\nRecommended mutation pattern:\n\n1. Use `--idempotency-key \u003cstable-key\u003e` on mutating commands.\n2. Retry safely on transport/process failures with the same key.\n3. Treat JSON envelope fields (`ok`, `error.code`, `data`) as the API contract.\n\nAsync send pattern:\n\n```bash\n# enqueue prompt\namux --json agent send \u003csession_or_agent\u003e --text \"...\" --enter --async\n\n# poll status\namux --json agent job status \u003cjob_id\u003e\n\n# or wait until terminal state\namux --json agent job wait \u003cjob_id\u003e --timeout 30s --interval 200ms\n\n# optional cancellation (pending jobs only)\namux --json agent job cancel \u003cjob_id\u003e\n```\n\nGraceful stop pattern:\n\n```bash\namux --json agent stop \u003csession_or_agent\u003e --graceful --grace-period 1200ms\n```\n\nThis sends `Ctrl-C` first, then force-kills if the session is still running after the grace period.\n\n## Development\n\n```bash\ngit clone https://github.com/andyrewlee/amux.git\ncd amux\nmake run\n```\n\n## Operations\n\n- Logs are written to `~/.amux/logs/amux-YYYY-MM-DD.log` (default retention 14 days). Override retention with `AMUX_LOG_RETENTION_DAYS`.\n- Perf profiling: set `AMUX_PROFILE=1` to emit periodic timing/counter snapshots; adjust cadence with `AMUX_PROFILE_INTERVAL_MS` (default 5000).\n- pprof: set `AMUX_PPROF=1` (or a port like `6061`) to expose `net/http/pprof` on `127.0.0.1`.\n- Debug signals: set `AMUX_DEBUG_SIGNALS=1` and send `SIGUSR1` to dump goroutines into the log.\n- PTY tracing: set `AMUX_PTY_TRACE=1` or a comma-separated assistant list; traces write to the log dir (or OS temp dir if logging is disabled).\n","funding_links":[],"categories":["Table of Contents","Parallel Agent Runners","Harnesses \u0026 orchestration"],"sub_categories":["Session managers \u0026 parallel runners"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandyrewlee%2Famux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandyrewlee%2Famux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandyrewlee%2Famux/lists"}