About Harvis

Harvis is a self-hosted AI second brain. It runs a persistent Claude Code session alongside your Obsidian vault so your AI assistant has full, always-on context over every note you've ever written — accessible from your browser, phone, or Telegram.

What Harvis does

Most AI chat tools start from zero each conversation. Harvis is different: it keeps a Claude Code session alive inside a Docker container, permanently connected to your note vault. Ask it to research a topic, draft a note, find connections between ideas, or just tell you what you were thinking about last week — it can do all of that because it can read and write your vault directly.

🧠

Always-on AI session

Claude runs 24/7 with full read/write access to your notes. No context reset between conversations.

šŸ“±

Every access method

Chat via browser, claude.ai, Telegram, or attach directly in a terminal. Same live session, all channels.

šŸ”’

Your data, your server

Self-host on any machine. Notes stay on your hardware and sync to a private GitHub repo you own.

How it works

Harvis is three layers that work together: a Next.js platform on Vercel handles your identity and routes browser traffic; a Cloudflare Tunnel carries that traffic securely into your container; and the container itself runs eight coordinated processes.

Browser ↓ harvis.yeve.dev (Vercel — identity, JWT signing, proxy) ↓ Cloudflare Tunnel (no open ports on your machine) ↓ Container port 3000 (Hono — dashboard API) ↓ Claude + Obsidian + Syncthing (8 processes via supervisord)

The 8 container processes

ProcessWhat it does
claudePersistent Claude Code session in tmux — your AI brain
claude-cred-watchdogRefreshes OAuth tokens proactively every 15 min so Claude never drops mid-session
tunnelCloudflare cloudflared — exposes the dashboard over HTTPS without opening ports
harvis-dashboardHono API server on port 3000 — powers the chat, tasks, projects, and wiki UI
xvfbVirtual framebuffer so Obsidian can run headless (no monitor needed)
obsidianHeadless Obsidian Electron — manages the vault index and plugin ecosystem
syncthingBidirectional file sync with your phone for Obsidian Mobile
gitwatchAuto-commits and pushes vault changes to GitHub within 15 seconds

Auth chain

Harvis uses Clerk for identity on the platform side. Every request to your container is signed with a short-lived ES256 JWT — the container verifies it against a public key endpoint without ever calling Vercel. Your container never handles passwords or Clerk sessions directly.

How to use Harvis

Browser — Harvis Dashboard

Navigate to http://localhost:3000 (or your tunnel URL when away from home). The dashboard has four tabs: Tasks, Projects, Wiki, and Chat. Chat streams Claude responses live and persists every exchange.

claude.ai — Remote session

Sign into claude.ai, look for Second Brain in the remote sessions list, and connect. This attaches you directly to the same live tmux session running in your container — desktop and mobile both work.

Terminal — tmux attach

For the full Claude Code TUI, attach directly:

docker compose exec brain gosu brain tmux -S /tmp/brain-tmux.sock attach -t brain

Detach without stopping: Ctrl-b d

Telegram — message from anywhere

Once the Telegram bridge is configured, any message you send to your bot is forwarded to Claude. Responses stream back in real time. Useful commands:

CommandWhat it does
/statusCheck if Harvis is online
/clearReset Claude's context window
/compactCompact the conversation history
/costShow current session cost
/queueList messages queued while offline

Any other text is forwarded as a prompt. Claude Code slash commands like /save, /autoresearch, and /canvas all work in Telegram too.

Obsidian Mobile — notes on your phone

Syncthing keeps your vault in sync with your phone in seconds. Install Obsidian Mobile, point it at the Syncthing-synced folder, and you have the full note-editing experience on your phone. Changes Claude makes in the container appear on your phone within seconds.

What to ask Claude

Claude has full read/write access to every file in your vault. Some ideas:

// Research & note creationCreate a concept note about [topic] in wiki/concepts/ and link it to related notes.I just read [book]. Summarise the key ideas and save as a source note.
// Finding connectionsWhat have I written about [topic]? Summarise and find connections I might have missed.Which concepts in my vault relate to [idea]? Create a canvas showing how they connect.
// Slash commands/autoresearch quantum computing/save/canvas my project ideas

Vault structure

Your notes live in data/vault/ on the host, mounted at /vault inside the container.

vault/ ā”œā”€ā”€ wiki/ │ ā”œā”€ā”€ concepts/ ← Abstract ideas, mental models, frameworks │ ā”œā”€ā”€ entities/ ← People, organisations, places, products │ ā”œā”€ā”€ sources/ ← Books, articles, papers, videos │ └── meta/ ← Notes about your note-taking system ā”œā”€ā”€ tasks/ ← Task files (markdown frontmatter) ā”œā”€ā”€ projects/ ← Project files ā”œā”€ā”€ routines/ ← Scheduled Telegram routines └── _templates/ ← Reusable note templates

Every save is auto-committed by Gitwatch and pushed to your private GitHub repo within 15 seconds — a full version history of every thought.

Ready to set it up?

The setup guide walks you through every step — from installing Docker to a fully running system with Telegram integration.

Setup guide →