Setup guide
Everything you need to go from zero to a fully running Harvis instance — including Claude, Telegram, mobile sync, and the web dashboard.
Prerequisites
| Software | Notes |
|---|---|
| Windows 10/11 (64-bit) | Already on your machine |
| WSL2 | Run wsl --install in PowerShell as Admin |
| Docker Desktop | Enable the WSL2 backend during install |
| Git (Windows) | git-scm.com |
| Account | Purpose | Cost |
|---|---|---|
| GitHub | Vault backup + version history | Free |
| Anthropic / Claude | AI — requires Claude Max or Pro | Paid |
| Telegram | Mobile bot interface | Free |
Verify Docker is ready before continuing:
You should see "Hello from Docker!" — if so, you're good.
Installation steps
Get the infra repo
Create the project folder and clone the Harvis infrastructure repo:
Get the AI tool layer
Clone claude-obsidian into the project folder. The compose file bind-mounts it read-only into the container.
Create your vault repository on GitHub
- Go to github.com → New repository
- Name it harvis_vault (or anything you like)
- Set it to Private
- Do not initialise with a README — the container does this on first start
- Copy the SSH remote URL: git@github.com:<you>/harvis_vault.git
Configure the environment
Copy the example config and fill in your details:
Build and start the container
The first build takes 5–15 minutes. Watch the logs:
When ready, all 8 processes should show RUNNING:
Add the SSH deploy key to GitHub
The container generates an ed25519 key on first start. Get the public key:
- Go to github.com/<you>/harvis_vault → Settings → Deploy keys
- Click Add deploy key
- Title: Harvis, paste the public key, tick Allow write access
Verify it works:
Log in to Claude
Attach to the Claude tmux session:
If Claude is waiting for login, type /login and follow the OAuth flow in your browser. Detach when done with Ctrl-b d.
Set up the Telegram bot (optional)
- Message @BotFather on Telegram → /newbot → copy the token
- Add to /vault/.harvis/config.env:TELEGRAM_BOT_TOKEN=<your token>
- Restart the bridge:docker compose exec brain supervisorctl restart telegram-bridge
- Message your bot anything — it replies in discovery mode with your chat ID. Add it to config.env:TELEGRAM_ALLOWED_CHAT_ID=<your chat ID>
- Restart the bridge again, then send /status to confirm.
Confirm the dashboard is running
Open http://localhost:3000 in your browser. You should see the Harvis Dashboard with Tasks, Projects, Wiki, and Chat tabs.
If it's not loading:
Set up Syncthing for mobile notes (optional)
- Open the Syncthing web UI at http://127.0.0.1:8384
- Install Syncthing on your phone (F-Droid / Möbius Sync for iOS)
- Get your phone's Device ID: Syncthing app → menu → Show Device ID
- In the PC Syncthing UI → Add Remote Device → paste the phone's Device ID
- Accept the pairing on your phone, then share the Default Folder (your vault)
- Install Obsidian Mobile → open the synced folder as a vault
Configure auto-start after reboot
Run start.ps1 after every reboot to bring Docker Desktop and the container back up automatically:
Verification checklist
Troubleshooting
Container won't start / keeps restarting
Most common on first start — WSL2 bind-mount timing bug. Force recreate:
Claude says it has no credentials
Attach and run /login, then clear the stale flag:
Vault not pushing to GitHub
The deploy key may have been removed. Test SSH auth:
Telegram bot not responding
Check the bridge status and logs:
Dashboard shows blank
Restart the dashboard process:
How to use Harvis
Daily workflows, slash commands, example prompts, and note organisation tips.
Read the overview →