{"id":51915946,"url":"https://github.com/yunsii/wezdeck","last_synced_at":"2026-07-27T10:30:48.290Z","repository":{"id":347776615,"uuid":"1194167388","full_name":"yunsii/wezdeck","owner":"yunsii","description":"A flight deck for your AI agents — multi-agent terminal platform built on WezTerm + tmux + git worktrees. / 为 AI agent 时代的多 agent 驾驶舱，基于 WezTerm + tmux + git worktrees。","archived":false,"fork":false,"pushed_at":"2026-07-25T02:38:15.000Z","size":3030,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-07-25T03:14:58.081Z","etag":null,"topics":["agent-orchestration","ai-agents","claude-code","codex","developer-tools","git-worktree","lua","terminal","terminal-multiplexer","tmux","wezterm","wsl"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/yunsii.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"open_collective":"yuns","custom":["https://afdian.com/a/yunslove"]}},"created_at":"2026-03-28T02:06:37.000Z","updated_at":"2026-07-25T02:38:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"fa0cb2a1-d1a2-479a-a006-12f1df178c62","html_url":"https://github.com/yunsii/wezdeck","commit_stats":null,"previous_names":["yunsii/wezterm-config","yunsii/wezdeck"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/yunsii/wezdeck","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yunsii%2Fwezdeck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yunsii%2Fwezdeck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yunsii%2Fwezdeck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yunsii%2Fwezdeck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yunsii","download_url":"https://codeload.github.com/yunsii/wezdeck/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yunsii%2Fwezdeck/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35949059,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-27T02:00:06.776Z","response_time":101,"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":["agent-orchestration","ai-agents","claude-code","codex","developer-tools","git-worktree","lua","terminal","terminal-multiplexer","tmux","wezterm","wsl"],"created_at":"2026-07-27T10:30:47.378Z","updated_at":"2026-07-27T10:30:48.275Z","avatar_url":"https://github.com/yunsii.png","language":"Shell","funding_links":["https://opencollective.com/yuns","https://afdian.com/a/yunslove"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/brand/banner.svg\" alt=\"WezDeck — A flight deck for your AI agents\" width=\"960\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eWezDeck\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eA flight deck for your AI agents — built on WezTerm, tmux, and git worktrees.\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg alt=\"License: MIT\" src=\"https://img.shields.io/badge/license-MIT-blue.svg\"\u003e\u003c/a\u003e\n  \u003cimg alt=\"WezTerm: nightly\" src=\"https://img.shields.io/badge/wezterm-nightly-8b5cf6\"\u003e\n  \u003cimg alt=\"tmux: ≥ 3.7\" src=\"https://img.shields.io/badge/tmux-%E2%89%A5%203.7-1f6feb\"\u003e\n  \u003cimg alt=\"Platform\" src=\"https://img.shields.io/badge/platform-linux%20%C2%B7%20wsl%20%C2%B7%20macOS-22d3ee\"\u003e\n  \u003cimg alt=\"Lua\" src=\"https://img.shields.io/badge/lua-5.4-000080\"\u003e\n\u003c/p\u003e\n\n\u003e One WezTerm tab per repo. One tmux window per worktree. One pane per agent. One keystroke to find what's waiting on you.\n\nThis repository is the source of truth for the WezDeck runtime. The GitHub repo is [`yunsii/wezdeck`](https://github.com/yunsii/wezdeck) (the previous `yunsii/wezterm-config` URL still works via GitHub's permanent redirect).\n\n## ✨ Highlights\n\n- **Tab × Worktree × Agent in one frame** — every WezTerm tab is one repo, every tmux window inside it is a linked git worktree, every pane can host an agent CLI (`claude` / `codex` / …).\n- **Live attention surface** — per-tab badges plus a single right-status counter `⟳ N running ⚠ N waiting ✓ N done`, driven by a Claude hook → `attention.json` pipeline.\n- **One keystroke to jump** — `Alt+/` opens a popup of every pending pane across every tab; `Alt+,` / `Alt+.` step through them.\n- **One keystroke to spawn a worktree** — `Ctrl+k g d/t/h` carves out a new linked worktree (with its own agent) without leaving the keyboard.\n- **Manifest-driven hotkeys** — `wezterm-x/commands/manifest.json` is the single source of truth; per-machine overrides live in `wezterm-x/local/keybindings.lua`.\n\n## 📺 Demo\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/brand/banner.svg\" alt=\"\" width=\"0\" height=\"0\" style=\"display:none\"\u003e\n  \u003cimg src=\"assets/demo/hero.png\" alt=\"WezDeck flight deck — six mock projects with live tab badges and counter\"\u003e\n\u003c/p\u003e\n\nSix mock projects (cli-parser / image-resizer / log-daemon, two worktrees each), all driving the real attention pipeline. Right-status `⟳ 2 ⚠ 5 ✓ 1` aggregates across the workspace; tab badges flip per pane; the focused agent is paused on a permission prompt — the rest are still streaming or have completed. Reproduce: see [`assets/demo/README.md`](assets/demo/README.md).\n\n## 🧭 How It Works\n\n```\nWezTerm tab          ─┐\n  └─ tmux window     ─┤  one repo  ·  one worktree  ·  one agent\n       └─ tmux pane  ─┘\n                       ↑\n       Claude hook → attention.json → tab badges + right-status counter\n                                       ↑\n                                  Alt+/  jumps to next pending pane\n```\n\nFull architecture, ownership boundaries, and the WSL ⇄ Windows communication channels: [`docs/architecture.md`](docs/architecture.md). For the session-management + interop map (workspace/tab/tmux/worktree/agent/attention ↔ session-bridge ↔ Feishu), see [Session \u0026 Interop Overview](docs/architecture.md#session--interop-overview).\n\n## ✅ Requirements\n\n| | Required | Notes |\n|---|---|---|\n| **WezTerm** | nightly | `hybrid-wsl` mode runs on the Windows nightly build |\n| **tmux** | ≥ 3.7 | DEC sync 3.6+; `refresh-from-pane` 3.7+. Prefer OS/brew package when ≥ 3.7; user-prefix `~/.local` only if distro is older (e.g. Ubuntu apt 3.4). [Install](docs/tmux-install.md) · [Why](docs/ime-flicker-and-sync-output.md) |\n| **lua5.4** | recommended | Powers the sync precheck; missing → precheck skipped with a warning |\n| **jq** | recommended | Agent-attention writer \u0026 focus path; missing → degraded labels |\n| **go ≥ 1.21** | optional | For maintainers of `native/picker/`. End users get a sha256-pinned prebuilt tarball via the release fetcher |\n| **python3** | optional | Only for WakaTime status |\n\nSupported runtime modes: `hybrid-wsl` (Windows WezTerm + WSL/tmux) and `posix-local` (Linux / macOS local).\n\n## 🚀 Quick Start\n\n```bash\n# 1. Seed your machine-local config\ncp -r wezterm-x/local.example/ wezterm-x/local/\n$EDITOR wezterm-x/local/constants.lua   # runtime_mode, default_domain, shell, …\n$EDITOR wezterm-x/local/shared.env      # WAKATIME_API_KEY, MANAGED_AGENT_PROFILE, …\n\n# 2. Sync the runtime into $HOME (writes ~/.wezterm.lua + ~/.wezterm-x/)\nskills/wezterm-runtime-sync/scripts/sync-runtime.sh\n\n# 3. Reload WezTerm and confirm the right status shows\n#    \"⟳ 0 ⚠ 0 ✓ 0\" — that means the attention pipeline is live.\n```\n\nFull setup walkthrough: [`docs/setup.md`](docs/setup.md).\n\n## 📚 Documentation\n\n**Get started**\n- [Setup](docs/setup.md) · [Daily workflow](docs/daily-workflow.md) · [Workspaces](docs/workspaces.md)\n\n**Daily use**\n- [Keybindings](docs/keybindings.md) · [tmux UI](docs/tmux-ui.md) · [Agent attention](docs/agent-attention.md) · [Browser debug](docs/browser-debug.md)\n\n**Internals**\n- [Architecture](docs/architecture.md) · [Performance](docs/performance.md) · [Diagnostics](docs/diagnostics.md) · [IME \u0026 sync output](docs/ime-flicker-and-sync-output.md)\n\n**Releases**\n- [Host helper](docs/host-helper-release.md) · [Picker](docs/picker-release.md)\n\nAgent rules: [`AGENTS.md`](AGENTS.md). Reusable user-level profiles: [`agent-profiles/`](agent-profiles/).\n\n## 🎨 Brand\n\nBrand SVGs and the geometric construction notes live in [`assets/brand/`](assets/brand/) — see [`assets/brand/README.md`](assets/brand/README.md) for the asset table and proportional rules.\n\n## 📄 License\n\nMIT © Yuns. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyunsii%2Fwezdeck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyunsii%2Fwezdeck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyunsii%2Fwezdeck/lists"}