Prerequisites
- uv —
curl -LsSf https://astral.sh/uv/install.sh | sh(automatically installs the required Python version) - Claude Code —
curl -fsSL https://claude.ai/install.sh | bashthen runclaudeto authenticate. A Claude subscription (Pro or Max) is recommended for access to the latest models. - A Discord account (the bot runs entirely in DMs — no server required)
- Git installed (the data directory is a git repo)
Installation
Follow the quickstart to get the bot running, then Optional integrations for Google OAuth, webhooks, etc. The steps below cover self-hosting-specific setup.Fork the repository
Fork the repo on GitHub, then clone your fork:The first command installs
ollim-bot as a global command. claude-history
is a global CLI tool used by subagents to review
Claude Code session transcripts.Working from a fork lets you customize the system prompt, subagent prompts,
and integrations while still pulling upstream changes.Create a Discord bot
Create a Discord application at the Discord Developer Portal.
You need the bot token and the Message Content privileged intent.See Discord bot setup for the full walkthrough.
Set up Google OAuth (optional)
Google Tasks, Calendar, and Gmail integration requires OAuth credentials
from Google Cloud Console. Download the credentials JSON and save it to
~/.ollim-bot/state/credentials.json.See Google OAuth setup for the full walkthrough.Run the bot
ollim-bot enforces single-instance via a PID file. On startup, it checks whether
the recorded PID is still alive, so stale PID files from crashes are handled
automatically.
What to customize
ollim-bot is designed to be personalized. The main customization points:Names and identity
SetOLLIM_USER_NAME and OLLIM_BOT_NAME in .env. These are woven into the
system prompt and all bot messages. The bot addresses you by OLLIM_USER_NAME
and refers to itself by OLLIM_BOT_NAME.
System prompt
The system prompt is built insrc/ollim_bot/prompts.py. It includes tool
instructions, scheduling context, and behavioral guidelines. Edit this file
to change the bot’s personality, communication style, or default behaviors.
Subagent prompts
Subagent prompts live insrc/ollim_bot/subagent_prompts.py. ollim-bot ships
with three subagents:
| Subagent | Purpose |
|---|---|
gmail-reader | Read-only email triage |
history-reviewer | Reviews session history for context |
responsiveness-reviewer | Evaluates the bot’s own proactive behavior |
AgentDefinition entries in agent.py.
Integrations
To add a new Google service: add the OAuth scope togoogle/auth.py, create a
new module in google/, and add tool instructions to the system prompt. See
Adding integrations for the full pattern.
Routines and reminders
Routines and reminders are markdown files in~/.ollim-bot/routines/ and
~/.ollim-bot/reminders/. The agent creates and manages these files directly,
but you can also create them manually or via the CLI:
Data directory
All persistent data lives in~/.ollim-bot/, managed as a git repository.
See Data directory for the full layout.
Running as a service
For persistent operation, run ollim-bot as a systemd user service:~/.config/systemd/user/ollim-bot.service
Session persistence
ollim-bot persists its Claude session across restarts — no context is lost. If you want a fresh start, use/clear in Discord. See
Session management for details on compaction,
lifecycle events, and session recovery.
Next steps
Discord bot setup
Create a Discord application, bot token, and enable required intents.
Google OAuth setup
Set up Google Tasks, Calendar, and Gmail integration.
Configuration reference
All environment variables and configuration options.
System prompt
How the system prompt is structured and how to customize it.
