Skip to main content
All environment variables and credential files that configure ollim-bot. The bot is configured through environment variables loaded from a .env file at the project root. All persistent data lives in ~/.ollim-bot/, which is automatically managed as a git repository — ollim-bot auto-commits changes on each write.

Environment variables

If WEBHOOK_PORT is set without WEBHOOK_SECRET, the webhook server will not start. Both must be set together.
All three required variables are validated together on startup. If any are missing, the bot lists all missing vars with hints and exits. See troubleshooting for the exact output.

.env file

Place a .env file at the project root. Both config.py and main.py call load_dotenv() to load it.
.env
CLI subcommands (routine, reminder, tasks, cal, gmail) do not require DISCORD_TOKEN — it is only loaded when starting the bot.

Runtime configuration

In addition to environment variables, ollim-bot has persistent runtime settings you configure via the /config slash command. ollim-bot stores these in ~/.ollim-bot/state/config.json, and they survive bot restarts.
Update detection is semver-tag based — the bot fetches tags from origin and compares the current version to the latest v* tag by version sort (git tag -l "v*" --sort=-version:refname). Untagged commits on main do not trigger auto-updates; releases only ship on a new v* tag. Use /version to see the currently running version.
Runtime config is separate from environment variables — env vars require a restart, while /config changes take effect immediately. Use env vars for credentials and infrastructure, /config for preferences.
The /config slash command’s dropdown only exposes a subset of keys for quick edits. google_calendars and google_task_list are not in the dropdown — edit ~/.ollim-bot/state/config.json directly to change them. Run /config with no parameters to see every key’s current value.

Tool policy

You can extend or override the default tool sets by creating a tool-policy.yaml file in ~/.ollim-bot/. This is useful for granting the agent access to additional tools without editing source code.
~/.ollim-bot/tool-policy.yaml
Changes take effect without a restart — the file is re-read when its modification time changes. See File formats for the full schema.

Data directory

All persistent data lives in ~/.ollim-bot/. See Data directory for the full layout, file descriptions, and git tracking details.

Storage patterns

ollim-bot uses two storage formats with shared conventions:
Routines, reminders, webhooks, and skills are stored as .md files with YAML frontmatter:
routines/morning-briefing.md
  • Filenames are auto-generated slugs from the message content
  • The id field in YAML is authoritative — filenames are for human readability
  • Slug collisions are resolved with numeric suffixes (-2, -3, etc.)
  • Writes use atomic temp-file-then-rename to prevent corruption
  • Each write triggers a git commit

Google credentials

Google integration uses file-based credentials rather than environment variables. Tokens are refreshed automatically. If a token is revoked, the bot detects it and prompts you to run /google-auth again. See Google integration setup for the full credential setup process.

Next steps

Data directory

Detailed layout of the ~/.ollim-bot/ directory.

File formats

YAML frontmatter specs for routines, reminders, webhooks, and skills.

Self-host ollim-bot

Running your own instance of ollim-bot.

Quickstart

Install ollim-bot and create a Discord bot.