{"id":49680316,"url":"https://github.com/kikakkz/wait-agent","last_synced_at":"2026-05-27T13:02:02.396Z","repository":{"id":349688921,"uuid":"1203455876","full_name":"kikakkz/wait-agent","owner":"kikakkz","description":"Agent mux terminal.","archived":false,"fork":false,"pushed_at":"2026-05-21T09:39:53.000Z","size":1823,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-21T10:09:57.771Z","etag":null,"topics":["ai-agents","cli","multi-agent","multiplexer","rust","terminal","terminal-multiplexer","tmux","tui","workspace-manager"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kikakkz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":null,"dco":null,"cla":null}},"created_at":"2026-04-07T03:54:33.000Z","updated_at":"2026-05-21T09:39:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kikakkz/wait-agent","commit_stats":null,"previous_names":["kikakkz/wait-agent"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/kikakkz/wait-agent","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kikakkz%2Fwait-agent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kikakkz%2Fwait-agent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kikakkz%2Fwait-agent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kikakkz%2Fwait-agent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kikakkz","download_url":"https://codeload.github.com/kikakkz/wait-agent/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kikakkz%2Fwait-agent/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33326841,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-21T12:23:38.849Z","status":"online","status_checked_at":"2026-05-22T02:00:06.671Z","response_time":265,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["ai-agents","cli","multi-agent","multiplexer","rust","terminal","terminal-multiplexer","tmux","tui","workspace-manager"],"created_at":"2026-05-07T06:09:00.115Z","updated_at":"2026-05-22T03:13:47.246Z","avatar_url":"https://github.com/kikakkz.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/logo.svg\" alt=\"WaitAgent\" width=\"320\"\u003e\n\u003c/p\u003e\n\n# WaitAgent\n\n[![CI](https://github.com/kikakkz/wait-agent/actions/workflows/ci.yaml/badge.svg)](https://github.com/kikakkz/wait-agent/actions/workflows/ci.yaml)\n[![Rust](https://img.shields.io/badge/rust-1.86.0-orange?logo=rust)](https://www.rust-lang.org)\n[![License](https://img.shields.io/badge/license-MIT-blue)](#license)\n[![tmux](https://img.shields.io/badge/tmux-vendored-1e90ff?logo=tmux)](https://github.com/tmux/tmux)\n\n\u003e **terminal · multiplexer · workspace · agent**\n\nWaitAgent is a terminal-native interaction scheduler for multi-agent workflows.\n\nIt does not try to replace agents, IDEs, or orchestration platforms. It focuses on a narrower problem:\n\n\u003e Let multiple AI agent sessions share one terminal, instead of forcing the user to switch between many terminals.\n\nThe target UX is workspace-first:\n\n- On a single machine, the user starts one `waitagent`\n- Inside that WaitAgent workspace, the user creates and manages multiple background sessions\n- Remote session aggregation is under active development: nodes can connect, discover sessions, and interact through a unified catalog\n\n## Current Positioning\n\nThe core goals of WaitAgent are:\n\n- Provide one workspace shell entrypoint per machine\n- Run multiple independent agent sessions behind a single terminal experience\n- Expose only one active session for interaction at a time within each attached console\n- Detect sessions that are likely waiting for user input\n- Preserve raw TTY behavior without semantic parsing or agent-specific behavior changes\n\n## Deployment Mode\n\n### Local Mode\n\nThe user starts one `waitagent` workspace on the machine and creates multiple managed sessions inside it.\n\n## Core Experience\n\n- Single focus: each attached console interacts with exactly one session at a time\n- Session switching stays explicit in the current local product\n- Minimal UI: no multi-panel dashboard, no card layout, no summary-first interface\n\n## Current State\n\nThis repository contains product documentation and an active Rust implementation.\n\nCurrent implementation status:\n\n- **Local workspace** is stable: one `waitagent` creates and manages multiple shell-backed sessions inside a tmux-native workspace with fixed sidebar, main slot, and footer\n- **Terminal fidelity** hardened for Codex-like TUIs: application cursor keys, managed viewport sizing, UTF-8, cursor visibility, wide-character rendering\n- **Remote networking** is the active phase: gRPC-based node session protocol, authority transport with mTLS-style handshake, session-scoped routing, reconnect and replay, publication ownership\n- **Current gate**: explicit session-scoped live-mirror control (`task.t5-08c4d3b`) so opened remote sessions show the client's real screen instead of placeholder state\n\nCurrent documents:\n\n- [Product PRD](docs/wait-agent-prd.md)\n- [Architecture](docs/architecture.md)\n- [Tmux-First Workspace Plan](docs/tmux-first-workspace-plan.md)\n- [Tmux-First Runtime Architecture](docs/tmux-first-runtime-architecture.md)\n- [Functional Design](docs/functional-design.md)\n- [Module Design](docs/module-design.md)\n- [UI Design](docs/ui-design.md)\n- [Interaction Flows](docs/interaction-flows.md)\n- [Protocol](docs/protocol.md)\n- [MVP Plan](docs/mvp-plan.md)\n- [Local Acceptance Checklist](docs/local-acceptance-checklist.md)\n- [Execution Status Board](docs/execution-status-board.md)\n- [Remote Node Connection Architecture](docs/remote-node-connection-architecture.md)\n- [Remote Network Completion Plan](docs/remote-network-completion-plan.md)\n- [Remote Live Mirror Design](docs/remote-live-mirror-design.md)\n\n## Build Prerequisites\n\nWaitAgent now compiles vendored tmux as part of the default `cargo build` path.\n\nTo install the required system packages, run:\n\n```bash\n./scripts/install-build-deps.sh\n```\n\nTo preview the detected package-manager command without executing it, run:\n\n```bash\n./scripts/install-build-deps.sh --print\n```\n\n### Download \u0026 Install\n\n**One-line install (Linux x86_64 / macOS Apple Silicon):**\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/kikakkz/wait-agent/main/scripts/install.sh | bash\n```\n\nTo install to a different directory or pin a specific version:\n\n```bash\nINSTALL_DIR=~/.local/bin VERSION=0.0.10 curl -fsSL https://raw.githubusercontent.com/kikakkz/wait-agent/main/scripts/install.sh | bash\n```\n\nPre-built packages are also available from the [GitHub Releases](https://github.com/kikakkz/wait-agent/releases) page.\n\n#### Linux\n\n| Format | Architecture | Command |\n|--------|-------------|---------|\n| `.deb` | x86_64 | `sudo dpkg -i waitagent_\u003cversion\u003e_amd64.deb` |\n| `.rpm` | x86_64 | `sudo rpm -i waitagent-\u003cversion\u003e-1.x86_64.rpm` |\n| `.tar.gz` | x86_64 | `tar xzf waitagent-\u003cversion\u003e-x86_64-linux.tar.gz` |\n\nAfter installing via `.deb` or `.rpm`, the `waitagent` binary is available system-wide.\n\n#### macOS\n\n| Format | Architecture | Command |\n|--------|-------------|---------|\n| `.tar.gz` | x86_64 / aarch64 | `tar xzf waitagent-\u003cversion\u003e-\u003carch\u003e-macos.tar.gz` |\n| `.dmg` | x86_64 / aarch64 | Open the `.dmg` and drag **WaitAgent.app** to Applications |\n\nThe `.dmg` contains a bundled `.app` with the CLI binary inside (`WaitAgent.app/Contents/MacOS/waitagent`). You can symlink it:\n\n```bash\nln -s /Applications/WaitAgent.app/Contents/MacOS/waitagent /usr/local/bin/waitagent\n```\n\n### Build from Source\n\nBuild prerequisites are listed above. To build from source instead of using a pre-built package:\n\n```bash\ngit clone --recursive https://github.com/kikakkz/wait-agent\ncd wait-agent\n./scripts/install-build-deps.sh\ncargo build --release\n```\n\nThe binary is written to `target/release/waitagent`.\n\n## Single-Machine Usage\n\n```bash\n# Start a workspace (creates a tmux-backed workspace on this machine)\nwaitagent\n\n# List available sessions\nwaitagent ls\n\n# Attach to a session\nwaitagent attach \u003ctarget\u003e\n\n# Detach from current session\nwaitagent detach\n```\n\n## Multi-Machine Usage\n\nWaitAgent supports remote session aggregation across machines through a gRPC-based node protocol. One machine runs as the server (listener), the other connects as a remote node.\n\n### On the server machine (listener)\n\n```bash\n# Start waitagent with the public port enabled\nwaitagent --port 7474\n```\n\nThis starts the workspace and opens a listener on `0.0.0.0:7474`. Remote nodes can connect, discover the server's sessions, and interact through the shared catalog.\n\n### On the remote machine (connecting node)\n\n```bash\n# Connect to the server and attach\nwaitagent --connect \u003cserver-ip\u003e:7474 attach \u003ctarget\u003e\n```\n\nRemote sessions are surfaced in the same unified session catalog as local sessions. The remote node sends input and receives output over an authenticated transport with session-scoped routing, reconnect support, and replay on reconnect.\n\n### Current remote protocol status\n\nThe remote networking layer is under active development. The current implementation covers:\n\n| Feature | Status |\n|---|---|\n| gRPC node session protocol (`waitagent.remote.v1.NodeSessionService`) | ✅ Implemented |\n| `--port` / `--connect` CLI contract | ✅ Implemented |\n| Session-scoped routing and authority transport | ✅ Implemented |\n| Reconnect with bounded replay | ✅ Implemented |\n| Publication ownership and target discovery | ✅ Implemented |\n| Remote terminal bootstrap and replay | ✅ Implemented |\n| Live-mirror open/close protocol | ✅ Implemented |\n| PTY-owner mirror lifecycle | ✅ Basic (needs hardening) |\n| Cross-host visible parity validation | ✅ Basic (manual validation passed, needs hardening) |\n\n## Recommended Next Step\n\n- Close the current phase-2 gate: implement explicit session-scoped mirror open/close protocol and server-side per-session mirror-route ownership on the public `--port` + `--connect` path\n\n## Why This Exists\n\nExisting tools solve adjacent but different problems:\n\n- `tmux / Zellij` solve terminal multiplexing\n- `Claude Code / Codex CLI` solve single-agent CLI execution\n- `Codex App / Cursor / Warp` solve vendor-owned multi-agent management\n\nWhat is still missing is a terminal-native, vendor-neutral, low-intrusion interaction layer for human-in-the-loop multi-agent CLI workflows.\n\n---\n\n## Topics\n\n`tmux` `terminal-multiplexer` `multiplexer` `workspace-manager` `terminal` `rust` `cli` `tui` `multi-agent` `ai-agents`\n\n*Add these topics on the [repo settings page](https://github.com/kikakkz/wait-agent/settings) → \"Topics\" for better discoverability on GitHub.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkikakkz%2Fwait-agent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkikakkz%2Fwait-agent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkikakkz%2Fwait-agent/lists"}