cys-terminal
A terminal multiplexer, a local daemon, a mission-control dashboard, and a multi-agent operating system (the CYSJavis pack) in one body. Run several CLI agents (Claude Code, Codex, …) in parallel under distinct roles — master, worker, CSO, reviewer — let them talk to each other over sockets, and monitor cost, context, and hardware in real time.
Most of this codebase was written by AI agents under human direction — the
Co-Authored-Bychain in the commit log is the record of that process. The repository itself is a working proof that AI-fleet orchestration is real.
This demo site was built by Docsbook from the project's own README, User Manual, Architecture & Philosophy, and install docs on GitHub -- reorganized into topic pages, not rewritten. The original repository is Korean-first; pages without an English source are reproduced verbatim in Korean and clearly marked.
On this site#
| Page | Contents |
|---|---|
| Architecture & Philosophy | Design theses, the three walls, ten absolute principles, role system (Korean) |
| System Architecture & Security | Component map, protocol, security model, persistence, RSI loop (Korean) |
| CYSJavis Pack & Features | The built-in multi-agent OS, 22 native features, resource governance, approval feed |
| Install on macOS | DMG setup, shell install, always-on daemon |
| Install on Windows | Self-contained NSIS installer walkthrough |
| User Manual: Getting Started | Terms, install, first-run onboarding, terminal UI |
| User Manual: Fleet Operations | Roles, messaging, approvals, resource limits, scheduler |
| User Manual: Control Center | Live monitoring, cost tracking, Skill Board |
| User Manual: Updates & Pack Ops | Zero-downtime updates, pack customization |
| User Manual: Reference | Channel bridge, recall/attest, CLI, env vars, protocol |
| How cys-terminal Compares | Head-to-head vs AgentRadio, Hermes Agent, and OpenClaw |
| Security Policy | Threat model, reporting vulnerabilities |
| Contributing | Ground rules, required checks, building from source |
| Notice | Third-party attributions |
Why#
Existing terminals and multiplexers are built for humans typing commands. Run several AI agents in them and you hit real limits fast: panes cannot talk to each other, orphan servers left behind by agents pile up until the machine chokes, and nobody can see who is spending what. cys-terminal is an independent, from-scratch implementation that makes those three problems first-class features.
And a fourth problem — how do you organize the agents into an organization? — is solved by a built-in pack (CYSJavis: role-based absolute directives + deterministic operational tools).
The resource wall is handled not only while agents run but during deploy and upgrade too: keeping the "stop" command reachable even at the instant the app is replaced with a new version (cross-platform atomic swap) is a first-class goal.
One documentation convention: when this repo describes an improvement, it states what the user loses first. Marketing exaggeration is banned — only what actual code and releases back up gets written down.
Design Principles (ABSOLUTE)#
- Bidirectional socket communication — no one-way send + capture polling.
Every pane on the same socket is an equal node that can actively push to any
other pane by surface ID:
cys send --surface surface:31 "..."+send-key Returninjects directly into the target pane's PTY stdin, arriving as a new user turn. Server→client is thecys eventspush stream (sequence numbers, resume on reconnect). - Resource governance as a first-class feature — built-in mitigation that stops orphan-server accumulation → load explosion → 401/hang at the source.
- Core/UI separation — the daemon (
cysd) runs independently of any UI. Even if the UI hangs, the socket control channel stays alive (out-of-band recovery). - Fail-closed signing — app binaries are signed for the Tauri updater; the pack is
signed with minisign (public key pinned in the binary). If verification fails,
installation/deployment itself is refused. Self-sealing invariant — a signed bundle
never rewrites its own contents at runtime (3-layer
.pycself-generation sealing + a post-signing count-reconciliation gate). - Directives and machine as one body — the role-based absolute directives, operational tools, and skills (the CYSJavis pack) are built, signed, and shipped together with the terminal, and auto-injected when a node boots.
- Passive cognition layer (radio) — discovery notifications and decisions are kept
physically separate. Principle 1 (active push) is the decision/steering channel;
radio is the passive layer where many workers running tickets in parallel announce
their findings to one another. Decision traffic — approvals, verdicts, done — is
never carried on radio: the single source of truth for decisions stays the tickets
and
gate-status.
Install#
Grab the latest from Releases. Recipients do not install a daemon separately — the app boots it and installs the pack automatically.
- macOS:
cys_<version>_aarch64.dmg(Apple Silicon). A bundled "Install cys.app" helper stages the app hidden, then swaps it into place with a single system call (renamex_np), eliminating the race where a Finder drag exposed a half-copied bundle mid-copy. (Use the helper rather than overwriting by drag.) - Windows:
cys_<version>_x64-setup.exe— daemon, CLI, and runtime bundled (self-contained). PE version-resource, manifest, and icon embedding reduce SmartScreen/Defender friction, but the build is still unsigned, so a first-run warning can appear. See docs/INSTALL-Windows-KR.md. - Optional 24/365 always-on:
cys daemon install(launchd KeepAlive / Task Scheduler). - Use
cysfrom an external terminal: app Control Center → "Install cys to shell" (one click).
Install/uninstall details: docs/INSTALL.md. Full usage: User Manual.
Quick Start#
cys identify # who am I (surface address)
cys launch-agent --role worker --agent claude # boot a role node (directives auto-injected)
cys send --to worker "status report, please" # push by role address
cys send-key --to worker Return # confirm submission
cys status --json # one-call fleet snapshot
cys events --reconnect # push event stream (replaces polling)
cys run --scoped -- python -m http.server # lifecycle-managed scoped execution
cys boot # boot the standard node set (auto-detects installed CLIs)Architecture#
cys.app Tauri desktop app: terminal UI (xterm.js — wheel scroll, drag-select, copy
restored even over a TUI) + Control Center — a thin client of the daemon
cysd headless core daemon: NDJSON socket server (UDS / Windows named pipe),
PTY (portable-pty: openpty / ConPTY), vt100 screen reconstruction, event bus,
watchdog, process ledger, usage/cost collectors, persistent analytics (SQLite),
scheduler
cys CLI: the equal-node client used by the AI inside each pane
pack cysjavis-pack/: 10 absolute directives · 90+ deterministic tools · 25+ hooks ·
114+ skills · 4 schemas (embedded at build, minisign-signed at distribution,
user-modified files treated as inviolable)
Every pane process gets CYS_SURFACE_ID, CYS_SURFACE_REF, and CYS_SOCKET injected
automatically — the AI inside a pane learns its own address instantly via cys identify.
The PTY is owned by the daemon, so sessions survive app restart, reinstall, and update
(re-attach).