{"id":49002480,"url":"https://github.com/drolosoft/cmux-resurrect","last_synced_at":"2026-05-06T02:05:23.077Z","repository":{"id":347204219,"uuid":"1188788832","full_name":"drolosoft/cmux-resurrect","owner":"drolosoft","description":"🔄✨🖥️ Session persistence for cmux — save, restore, and manage your terminal workspaces. Never lose your layout again.","archived":false,"fork":false,"pushed_at":"2026-04-14T00:49:01.000Z","size":5003,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-14T02:11:43.914Z","etag":null,"topics":["cli","cmux","golang","session-manager","terminal","tmux-resurrect","workspace-manager"],"latest_commit_sha":null,"homepage":"https://drolosoft.com/cmux-resurrect.html?lang=en","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/drolosoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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},"funding":{"buy_me_a_coffee":"juan.andres.morenorub.io"}},"created_at":"2026-03-22T15:33:15.000Z","updated_at":"2026-04-14T00:49:05.000Z","dependencies_parsed_at":"2026-04-14T02:02:47.871Z","dependency_job_id":null,"html_url":"https://github.com/drolosoft/cmux-resurrect","commit_stats":null,"previous_names":["drolosoft/cmux-resurrect"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/drolosoft/cmux-resurrect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drolosoft%2Fcmux-resurrect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drolosoft%2Fcmux-resurrect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drolosoft%2Fcmux-resurrect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drolosoft%2Fcmux-resurrect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/drolosoft","download_url":"https://codeload.github.com/drolosoft/cmux-resurrect/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drolosoft%2Fcmux-resurrect/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31980783,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T17:30:12.329Z","status":"ssl_error","status_checked_at":"2026-04-18T17:29:59.069Z","response_time":103,"last_error":"SSL_read: 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":["cli","cmux","golang","session-manager","terminal","tmux-resurrect","workspace-manager"],"created_at":"2026-04-18T19:00:58.397Z","updated_at":"2026-05-06T02:05:23.071Z","avatar_url":"https://github.com/drolosoft.png","language":"Go","funding_links":["https://buymeacoffee.com/juan.andres.morenorub.io"],"categories":["Feature Dimensions"],"sub_categories":["8. Monitoring \u0026 Session Restore"],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"assets/logo.png\" alt=\"crex logo\" width=\"120\"\u003e\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003ecrex \u003csup\u003e\u003csub\u003e(cmux-resurrect)\u003c/sub\u003e\u003c/sup\u003e\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/drolosoft/cmux-resurrect/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/drolosoft/cmux-resurrect/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://goreportcard.com/report/github.com/drolosoft/cmux-resurrect\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/drolosoft/cmux-resurrect\" alt=\"Go Report Card\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://pkg.go.dev/github.com/drolosoft/cmux-resurrect\"\u003e\u003cimg src=\"https://pkg.go.dev/badge/github.com/drolosoft/cmux-resurrect.svg\" alt=\"Go Reference\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/drolosoft/cmux-resurrect\"\u003e\u003cimg src=\"https://codecov.io/gh/drolosoft/cmux-resurrect/branch/main/graph/badge.svg\" alt=\"codecov\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"License: MIT\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/drolosoft/homebrew-tap\"\u003e\u003cimg src=\"https://img.shields.io/badge/Homebrew-tap-orange.svg\" alt=\"Homebrew\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/drolosoft/cmux-resurrect/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/drolosoft/cmux-resurrect\" alt=\"GitHub Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/manaflow-ai/cmux\"\u003e\u003cimg src=\"https://img.shields.io/badge/cmux-ecosystem-blueviolet.svg\" alt=\"cmux\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003e **Save, restore, and template your terminal workspaces — for [cmux](https://github.com/manaflow-ai/cmux) and [Ghostty](https://ghostty.org/).**\n\nInspired by [tmux-resurrect](https://github.com/tmux-plugins/tmux-resurrect), **crex** was born to do for [cmux](https://github.com/manaflow-ai/cmux) what tmux-resurrect does for tmux — and then went further. With an **interactive shell**, a **template gallery**, **Blueprints**, and a **watch daemon**, crex saves your entire layout and brings it back: all your tabs, pane arrangements, working directories, pinned state, and startup commands. Named after the corncrake (*Crex crex*), a bird that returns to the same ground year after year — your terminal's own phoenix.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"assets/demo.gif\" alt=\"crex demo\" width=\"800\"\u003e\u003c/p\u003e\n\n---\n\n## 🚀 Quick Start\n\n### Install with Homebrew (recommended)\n\n```sh\nbrew install drolosoft/tap/crex            # preferred\nbrew install drolosoft/tap/cmux-resurrect  # legacy alias — same formula\n```\n\nBoth `crex` and `cmux-resurrect` commands are ready to use (`cmux-resurrect` is the legacy name), with shell completions installed automatically. No Go toolchain required. macOS only (both cmux and Ghostty's AppleScript API are macOS-native).\n\n### Install with `go install`\n\n```sh\ngo install github.com/drolosoft/cmux-resurrect/cmd/crex@latest\n```\n\n\u003e For building from source, see [docs/building.md](docs/building.md).\n\n### Enable Shell Completion\n\nHomebrew users get completions automatically. For manual installs, add one line to your shell config:\n\n```sh\neval \"$(crex completion zsh)\"    # zsh — add to ~/.zshrc\neval \"$(crex completion bash)\"   # bash — add to ~/.bashrc\ncrex completion fish | source    # fish — run once\n```\n\nNow `crex \u003cTAB\u003e` shows all commands, `crex restore \u003cTAB\u003e` completes your saved layout names, and flags like `--mode` complete their values. See [docs/shell-completion.md](docs/shell-completion.md) for the full guide.\n\n### Try it\n\n```sh\ncrex setup                                # guided first-run configuration\ncrex save my-day                          # snapshot your current layout\ncrex save my-day -d \"Friday deep work\"    # with a description\ncrex tui                                  # interactive shell\n```\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"assets/quickstart.gif\" alt=\"crex quick start\" width=\"800\"\u003e\u003c/p\u003e\n\n---\n\n## 💾 Save \u0026 Restore\n\n```sh\ncrex save my-day                          # snapshot your layout\ncrex save my-day -d \"Friday deep work\"    # add a description (preserved across re-saves)\ncrex restore my-day                       # bring it all back\n```\n\nEvery tab, pane arrangement, CWD, pinned state, and startup command — captured and restored. Layouts are saved to `~/.config/crex/layouts/`.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"assets/save-my-day.png\" alt=\"crex save my-day\" width=\"700\"\u003e\u003c/p\u003e\n\n## 🧙 Setup Wizard\n\nFirst time? `crex setup` walks you through everything:\n\n```sh\ncrex setup              # interactive guided configuration\ncrex setup --defaults   # accept all defaults (CI/scripting)\n```\n\nThe wizard auto-detects your terminal backend (cmux or Ghostty), creates a default `config.toml` if missing, and sets up the layouts directory. One command and you're ready to go.\n\n## 🖥️ Interactive Shell\n\nRun `crex tui` — or just `crex` when config exists — to drop into the interactive shell. A `crex❯` prompt gives you full access to all commands without leaving your terminal.\n\n```\ncrex❯ ls                     list saved layouts\ncrex❯ restore 2              restore by number\ncrex❯ now                    show live terminal state\ncrex❯ templates              browse the gallery\ncrex❯ use claude             create workspace from template\ncrex❯ bp list                list Blueprint entries\ncrex❯ help                   show all commands\n```\n\nListings show numbered items — use the number in any follow-up command. Arrow keys browse listings inline. The shell adapts to your terminal's dark or light theme automatically.\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"assets/demo-tui.gif\" alt=\"crex interactive shell\" width=\"800\"\u003e\u003c/p\u003e\n\n## 📥 Blueprints\n\nDefine your terminal layout in Obsidian-compatible Markdown. Import creates only what's missing — it's idempotent.\n\n**Resume AI coding sessions across restarts** — Claude Code, OpenCode, and Codex all persist conversations locally. crex restores the terminals and tells each tool to continue where you left off:\n\n```markdown\n## Projects\n**Icon | Name | Template | Pin | Path**\n\n- [x] | 🤖 | Claude Code | claude-resume | yes | ~/projects/myapp\n- [x] | 🟢 | OpenCode    | opencode-resume | yes | ~/projects/api\n- [x] | 🔵 | Codex       | codex-resume | yes | ~/projects/frontend\n\n## Templates\n\n### claude-resume\n- [x] main terminal: `claude --continue --dangerously-skip-permissions` (focused)\n\n### opencode-resume\n- [x] main terminal: `opencode --continue` (focused)\n\n### codex-resume\n- [x] main terminal: `codex resume --last` (focused)\n```\n\nWorks with any command — dev servers, test watchers, git UIs, or AI pair-programming sessions:\n\n```markdown\n## Projects\n**Icon | Name | Template | Pin | Path**\n\n- [x] | 🌐 | webapp    | dev     | yes | ~/projects/webapp\n- [x] | ⚙️ | api       | dev     | yes | ~/projects/api-server\n- [x] | 🧪 | tests     | go      | yes | ~/projects/testing\n\n## Templates\n\n### dev\n- [x] main terminal (focused)\n- [x] split right: `npm run dev`\n- [x] split right: `lazygit`\n```\n\n```sh\ncrex import-from-md           # create tabs/workspaces from Blueprint\ncrex export-to-md             # capture live state to Blueprint\n```\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"assets/import-success.png\" alt=\"crex import-from-md in action\" width=\"800\"\u003e\u003c/p\u003e\n\n\u003e For the full Blueprint format and CLI management (`bp add`, `bp list`, `bp toggle`), see [docs/blueprint.md](docs/blueprint.md).\n\n## 📦 Template Gallery\n\ncrex ships with 16 ready-to-use templates for common developer workflows.\n\n| | Layout Templates | | Workflow Templates |\n|---|---|---|---|\n| ▥ | `cols` — side-by-side | 🤖 | `claude` — Claude Code pair-programming |\n| ▤ | `rows` — stacked | 💻 | `code` — general coding |\n| ◧ | `sidebar` — main + side | 🔭 | `explore` — navigate codebase |\n| ⊤ | `shelf` — big top, 2 bottom | 📊 | `system` — monitor health |\n| ⊢ | `aside` — big left, 2 right | 📜 | `logs` — tail streams |\n| Ⅲ | `triple` — three columns | 🌐 | `network` — debug connectivity |\n| ⊠ | `quad` — 2×2 grid | 📟 | `single` — minimal terminal |\n| ◱ | `dashboard` — top + 3 bottom | | |\n| ⧉ | `ide` — full IDE layout | | |\n\n```sh\ncrex template list                    # browse all templates\ncrex template show claude             # preview with ASCII diagram\ncrex template claude ~/project        # create workspace instantly (shortcut)\ncrex template customize claude        # fork to your Blueprint\n```\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"assets/template-list.png\" alt=\"crex template list showing 16 templates grouped by Layouts and Workflows\" width=\"700\"\u003e\u003c/p\u003e\n\n\u003e Templates are starting points. Run `crex template customize \u003cname\u003e` to fork any template and make it yours.\n\nSee [docs/templates.md](docs/templates.md) for the full gallery with diagrams.\n\n## Supported Backends\n\n| Backend | Status | Platform | Tested versions | Detection |\n|---------|--------|----------|-----------------|-----------|\n| [cmux](https://github.com/manaflow-ai/cmux) | Full support (original backend) | macOS | 0.62.1, 0.63.2 | Auto-detected via `CMUX_SOCKET_PATH` |\n| [Ghostty](https://ghostty.org/) | Full support (AppleScript API) | macOS | 1.3 | Auto-detected when Ghostty is running |\n\n\u003e **macOS only.** Both backends rely on macOS-native APIs (cmux is a macOS terminal multiplexer; the Ghostty backend uses AppleScript). Linux support will follow once Ghostty ships a cross-platform scripting API ([ghostty-org/ghostty#2353](https://github.com/ghostty-org/ghostty/discussions/2353)).\n\ncrex auto-detects your terminal backend — no flags needed. Just run your commands and crex figures out the rest:\n\n```sh\ncrex save my-day        # works in cmux or Ghostty\ncrex restore my-day     # recreates layout in whichever backend you're in\ncrex template use dev   # same templates, any backend\n```\n\nAll features — save, restore, import, export, templates, Blueprints — work identically across backends. The template gallery is 100% backend-agnostic.\n\n**Adaptive Themes** — crex auto-detects your terminal's dark/light background and adjusts banner colors. Three styles available: `flame` (gradient, default), `classic` (solid green), `plain` (gray). Set `banner_style` in `config.toml` or use `CREX_BANNER`; override detection with `CREX_THEME=dark|light`. See [Configuration](docs/configuration.md).\n\n---\n\n## ✨ Why crex?\n\n[tmux-resurrect](https://github.com/tmux-plugins/tmux-resurrect) proved that session persistence is essential for any serious terminal multiplexer workflow. Every multiplexer eventually gets one — crex started as that tool for cmux, and now brings the same power to Ghostty.\n\n| | tmux-resurrect | crex |\n|:---:|---|---|\n| 🖥️ | CLI commands only | **Interactive shell** — `crex❯` REPL with browse mode, number refs, history |\n| 📝 | Plugin configuration | **Blueprints** — Markdown files, Obsidian-compatible |\n| 🧩 | Manual pane recreation | **16 built-in templates** + custom Blueprints |\n| 📥 | One-way restore | **Bidirectional** — import from and export to Markdown |\n| 👁️ | Execute immediately | **Dry-run mode** — preview every command first |\n| ⏱️ | Manual saves | **Watch daemon** — background auto-save, deduped, shell hooks, zero-maintenance |\n| 📋 | Edit config files | **CLI blueprint management** — `add`, `remove`, `toggle` from terminal |\n| 🔤 | Basic tab completion | **Dynamic completions** — layout names, blueprint names, flag values (bash/zsh/fish) |\n\n---\n\n## 📚 Documentation\n\n| Doc | Description |\n|-----|-------------|\n| [Commands](docs/commands.md) | Full command reference, flags, and recipes |\n| [Blueprints](docs/blueprint.md) | Blueprint format, templates, CLI management |\n| [Workflows](docs/workflows.md) | Save/Restore vs Import, dry-run, side-by-side comparison |\n| [Configuration](docs/configuration.md) | config.toml reference and defaults |\n| [Auto-Save \u0026 Daemon](docs/auto-save.md) | launchd, daemon mode, shell hooks |\n| [Template Gallery](docs/templates.md) | Built-in templates, ASCII previews, customization |\n| [Template Authoring](docs/template-authoring.md) | Create and contribute custom templates |\n| [Shell Completion](docs/shell-completion.md) | Setup, troubleshooting, what gets completed |\n| [Building from Source](docs/building.md) | Makefile targets, cross-compilation, platform support |\n| [Architecture](ARCHITECTURE.md) | Internal design for contributors |\n\n---\n\n## 🌟 Contributing\n\nContributions are welcome — bug fixes, new templates, feature ideas. Open an issue or submit a PR.\n\nIf crex saves your sessions, consider giving it a ⭐ on GitHub — it helps others discover the project.\n\n---\n\n## ☕ Support\n\nIf crex saved you time or made your workflow easier, consider buying me a coffee — it keeps the next one coming!\n\n\u003cp align=\"center\"\u003e\u003ca href=\"https://buymeacoffee.com/juan.andres.morenorub.io\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy Me A Coffee\" height=\"50\"\u003e\u003c/a\u003e\u003c/p\u003e\n\n---\n\n## 📜 License\n\n**MIT License** — free to use, modify, and distribute.\n\nBorn from a real need: a crashed cmux session took an hour of carefully arranged workspaces with it. `crex` now protects your workspaces across both cmux and Ghostty — so that never happens again.\n\n**Forged by [Drolosoft](https://drolosoft.com)** · *Tools we wish existed*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrolosoft%2Fcmux-resurrect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrolosoft%2Fcmux-resurrect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrolosoft%2Fcmux-resurrect/lists"}