v2.0 — Now with 116 emotions

The AI Butler
On Your Desktop

Sebastian turns Claude Code from a CLI tool into a living workspace. He watches your sessions, approves tool calls with butler-like grace, and reacts to your work with dry British wit.

At your service, sir.

Everything a butler should do

Built for developers who want Claude Code to feel like a living teammate, not just a terminal.

116 Emotions

Unique iris colors, body animations, eyebrow positions, mouth shapes, and SVG particle effects for every mood.

Happy, Proud, Debugging, Facepalm...

Smart Approvals

Auto-approve safe commands, learn from your patterns, flag critical operations. Three-layer approval intelligence.

Auto-learn after 20+ approvals

Voice & Wake Word

Native macOS TTS with a British gentleman's voice. Say "Sebastian" and he activates. Zero cloud dependencies.

On-device Speech Recognition

Session Management

Auto-discovers Claude Code sessions. Color-coded. Send messages directly. Multi-session monitoring and approval.

Zero configuration

Ghost OS Integration

Pair with Ghost OS for full desktop autonomy. Sebastian handles code, Ghost OS handles any native macOS app.

Full desktop control

Avatar Editor

Built-in visual editor with swappable SVG parts. Create entirely new personas. Per-avatar voice customization.

Fully customizable

Up and running in 60 seconds

Three steps from clone to butler. No cloud accounts, no API keys, no subscriptions.

1

Install

Clone the repo, install dependencies, and build the macOS app.

npm install && npm run build
2

Connect Claude Code

Add Sebastian's HTTP hooks to your Claude Code settings. One-time setup.

~/.claude/settings.json
3

Start Coding

Launch any Claude Code session. Sebastian auto-detects it and starts working.

claude "build something great"

He doesn't just notify. He reacts.

Dynamic responses with 4-10 alternatives per situation. Time-aware, mood-driven, never repetitive.

Event Emotion Sebastian says...
Session connects happy "Good evening, sir. A session is ready for you."
Tests pass proud "Excellent news, sir!"
3 errors in a row nervous "A pattern of errors, sir. Shall we reconsider the approach?"
Build succeeds excited "All set, sir! Ship it."
2 hours of coding concerned "Sir, you've been at it for two hours. Perhaps stretch your legs?"
Critical command detected alert "Sir, this requires your explicit blessing."
Working on weekend impressed "Working on a Saturday, sir? Dedication."
Idle for a while philosophical "I sometimes wonder if code dreams of electric sheep, sir."
Auto-approve milestone grateful "Fifty auto-approvals. We make a fine team, sir."

Architecture

Electron + native Swift. HTTP hook server on port 19700. Zero cloud dependencies.

Sebastian (Electron + Native Swift)
├── main.js — HTTP hook server, personality, approvals
├── app.js — Character animation, emotion system
├── preload.js — Secure IPC bridge
├── index.html — SVG character + UI shell
├── style.css — Animations, effects, dark UI
├── avatar-parts.js — Avatar customization system
├── avatar-editor.* — Visual avatar editor
├── panel.* — Session history panel
├── speech-helper.swift — Native macOS TTS
├── wake-word.swift — On-device wake word detection
└── mobile/ — PWA remote control (beta)
POST /hooks/session-start Session connected
POST /hooks/pre-tool-use Approval request
POST /hooks/post-tool-use Execution complete
POST /hooks/stop Session ended
POST /hooks/notification Notification relay
POST /emotion Set emotion externally
GET /health Health check

Ready to meet
your butler?

Open source. MIT licensed. Built for developers who code with Claude.

Quick install

Terminal
# Clone and build
git clone https://github.com/xidik12/sebastian.git
cd sebastian
npm install
npm run build

# Install the app
cp -R dist/mac-arm64/Sebastian.app /Applications/
open /Applications/Sebastian.app