AI-first Linux OS — Claude Code as your shell.
Crius replaces the traditional desktop environment with Claude Code running inside tmux. Boot your machine, and instead of a login screen and file manager, you get an AI that controls your entire system through natural language.
This is not AI running inside an OS. This is AI as the OS interface.
Power on → Ubuntu boots → Auto-login → tmux launches → Claude Code starts
Claude Code has access to four MCP (Model Context Protocol) servers that give it direct system control:
| MCP Server | Purpose |
|---|---|
| crius-memory | Persistent memory across sessions — SQLite with FTS5 search |
| crius-system | Package management, services, disk/memory/CPU monitoring |
| crius-projects | Git repo scanning, project status, context switching |
| crius-comms | Slack integration — read unreads, send messages |
On every boot, Claude automatically:
- Registers the terminal session
- Restores previous context (what you were working on)
- Checks Slack for unread messages
- Scans projects for dirty repos
- Reports system health
- Presents a concise briefing
┌─────────────────────────────────────────────────┐
│ tmux session │
│ ┌──────────────────────┬──────────────────────┐ │
│ │ │ btop │ │
│ │ Claude Code ├──────────────────────┤ │
│ │ (primary shell) │ notifications │ │
│ │ │ tail │ │
│ └──────────────────────┴──────────────────────┘ │
│ │ │
│ MCP Protocol (stdio) │
│ │ │
│ ┌──────┴──────────────────────────────────────┐ │
│ │ crius-memory │ crius-system │ crius- │ │
│ │ (SQLite/FTS5) │ (apt, │ comms │ │
│ │ │ systemd) │ (Slack) │ │
│ │ crius-projects │ │
│ │ (git repos) │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
Ubuntu Linux / systemd
crius/
├── packages/
│ ├── shared/ # Shared TypeScript types
│ ├── crius-memory/ # Persistent memory daemon (SQLite + WAL + FTS5)
│ ├── crius-system/ # OS control (packages, services, resources)
│ ├── crius-projects/ # Git project awareness
│ └── crius-comms/ # Slack integration
├── system/ # OS configuration files
│ ├── claude.md # System CLAUDE.md (AI personality + behavior)
│ ├── claude.json # MCP server configuration
│ ├── tmux.conf # tmux layout and keybindings
│ ├── crius-launch.sh # Session launcher
│ ├── crius-fallback.sh # Fallback when API is unavailable
│ ├── zprofile # Auto-launch on TTY1
│ └── systemd/ # systemd service units
├── scripts/
│ ├── install.sh # Ubuntu setup script
│ └── deploy.sh # Build and deploy to target
└── docs/ # Design spec and implementation plan
- Hardware: x86_64 machine, 4GB+ RAM, 20GB+ disk, network connection
- OS: Ubuntu 24.04+ (fresh minimal install)
- Account: Claude Max subscription (for Claude Code)
Any x86_64 machine or VPS with Ubuntu 24.04. Tested on Hetzner Cloud (cx43).
git clone https://github.com/orzazade/crius.git /opt/crius
cd /opt/crius
sudo ./scripts/install.shThis installs system packages (Node.js 20, tmux, zsh, btop), creates the crius user, sets up auto-login on TTY1, and configures scoped sudo access for apt-get and systemctl.
sudo ./scripts/deploy.shBuilds all MCP servers, copies configs, enables the memory daemon, and sets up tmux.
su - crius
claudeLog in with your Anthropic account when prompted.
# Slack bot token (for Slack integration)
echo 'xoxb-your-token' | sudo tee /etc/crius/secrets/slack_tokensudo rebootCrius boots directly into Claude Code.
ssh crius@your-server-ip
tmux attach-session -t criusFull terminal experience with proper keybindings.
Use your hosting provider's web console (e.g., Hetzner Console) for direct TTY access.
Built as a pnpm monorepo. Develop on macOS/Linux, deploy to target.
# Install dependencies
pnpm install
# Build all packages
pnpm -r build
# Run all tests
pnpm -r test
# Build specific package
cd packages/crius-memory && pnpm build- Runtime: Node.js 20+, TypeScript
- Database: SQLite (better-sqlite3) with WAL mode and FTS5
- Protocol: MCP SDK (@modelcontextprotocol/sdk)
- Monorepo: pnpm workspaces
- Testing: Jest + ts-jest
Inside tmux (prefix: Ctrl+a):
| Key | Action |
|---|---|
Prefix + f |
Toggle fullscreen on current pane |
Prefix + b |
Launch Chromium browser (via Cage) |
Prefix + k |
Kill browser, return to tmux |
Prefix + n |
Open new Claude Code window |
Prefix + | |
Split pane horizontally |
Prefix + - |
Split pane vertically |
Ctrl+Alt+F2 |
Escape hatch — raw zsh on TTY2 |
If the Anthropic API goes down, Crius degrades gracefully:
- tmux session and MCP servers keep running
- Switch to TTY2 (
Ctrl+Alt+F2) for a raw zsh shell crius-fallbackprints a command cheatsheet- Memory is preserved in SQLite — nothing is lost
- On API recovery, new Claude Code session auto-restores context
| Version | Features |
|---|---|
| v0.1 (current) | Boot → Claude Code + memory + system + Slack + browser |
| v0.2 | Proactive watchdog alerts, smart notification filtering |
| v0.3 | Multi-terminal session sync, context resume |
| v0.4 | Custom TUI dashboard, voice input |
| v1.0 | Local model fallback, offline mode |
MIT