Overview

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-By chain 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 problemhow 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)#

  1. 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 Return injects directly into the target pane's PTY stdin, arriving as a new user turn. Server→client is the cys events push stream (sequence numbers, resume on reconnect).
  2. Resource governance as a first-class feature — built-in mitigation that stops orphan-server accumulation → load explosion → 401/hang at the source.
  3. 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).
  4. 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 .pyc self-generation sealing + a post-signing count-reconciliation gate).
  5. 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.
  6. 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 cys from 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).

Updated

Was this page helpful?