Agent Scheduler
Autonomous code improvement agent β register a project, set a goal, wake up to better code
Ask AI about Agent Scheduler
Powered by Claude Β· Grounded in docs
I know everything about Agent Scheduler. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Crius
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.
How It Works
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
Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β 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
Project Structure
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
Requirements
- Hardware: x86_64 machine, 4GB+ RAM, 20GB+ disk, network connection
- OS: Ubuntu 24.04+ (fresh minimal install)
- Account: Claude Max subscription (for Claude Code)
Installation
1. Provision a server
Any x86_64 machine or VPS with Ubuntu 24.04. Tested on Hetzner Cloud (cx43).
2. Clone and install
git clone https://github.com/orzazade/crius.git /opt/crius
cd /opt/crius
sudo ./scripts/install.sh
This 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.
3. Build and deploy
sudo ./scripts/deploy.sh
Builds all MCP servers, copies configs, enables the memory daemon, and sets up tmux.
4. Authenticate Claude Code
su - crius
claude
Log in with your Anthropic account when prompted.
5. Add secrets (optional)
# Slack bot token (for Slack integration)
echo 'xoxb-your-token' | sudo tee /etc/crius/secrets/slack_token
6. Reboot
sudo reboot
Crius boots directly into Claude Code.
Connecting
SSH (recommended)
ssh crius@your-server-ip
tmux attach-session -t crius
Full terminal experience with proper keybindings.
Web console
Use your hosting provider's web console (e.g., Hetzner Console) for direct TTY access.
Development
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
Tech Stack
- 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
Keybindings
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 |
Escape Hatch
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
Roadmap
| 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 |
License
MIT
