.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
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 atool-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
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:- Markdown files
- JSONL files
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
idfield 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.
