~/.ollim-bot/ as flat files.
There are two families of formats: markdown files with YAML frontmatter
(routines, reminders, webhooks, skills) and JSON/JSONL files (sessions, pending
updates, inquiries, ping budget). The data directory is a git repository —
most writes are auto-committed.
Markdown files (YAML frontmatter)
Routines, reminders, and webhooks share a common file structure: YAML frontmatter delimited by---, followed by a markdown body. Fields that
match their default value are omitted from the YAML when serialized.
Routines
Stored in~/.ollim-bot/routines/*.md. Filenames are auto-generated slugs based on the message body.
The markdown body after the closing
--- becomes the routine’s task message.
routines/nightly-sleep-review.md
Every background fork always receives the default tools — help, tasks CLI, and read-only file tools (
Read, Glob, Grep scoped to ./**.md). Discord tools are controlled separately by allow-ping and update-main-session. When allowed-tools is set, your tools are merged in on top of these defaults. See Tool restrictions for details.Reminders
Stored in~/.ollim-bot/reminders/*.md. Same slug-based filenames as routines.
reminders/pick-up-groceries.md
reminders/follow-up-on-project.md
Webhooks
Stored in~/.ollim-bot/webhooks/*.md. Same slug-based filenames.
The markdown body is a template —
{field_name} placeholders are replaced with payload values at dispatch time.
webhooks/ci-for-repo-status.md
Skills
Stored in~/.ollim-bot/skills/<name>/SKILL.md. Each skill is a directory containing a single SKILL.md file.
The markdown body contains the skill’s instructions. It can include dynamic context markers using the
!`command` syntax — shell commands expanded to their output at load time.
skills/ux-principles/SKILL.md
Dynamic context markers (
!`command`) have a 10-second per-command timeout and a 30-second total cap. Each command’s output is truncated to 2000 characters. See Dynamic context injection for the full expansion rules.Tool policy (tool-policy.yaml)
Stored at ~/.ollim-bot/tool-policy.yaml. An optional YAML file that lets you extend or override the default tool sets without editing source code.
The file is loaded with mtime-based caching — changes take effect without a restart.
tool-policy.yaml
If
bg_forks.override is set, it completely replaces the default background tools — use with care. The additional_allowed key is safer for most use cases.Shared markdown conventions
These rules apply to routines, reminders, and webhooks. Skills use a directory-based structure (skills/<name>/SKILL.md) instead of slug-generated filenames, but share the same atomic write and git conventions.
JSON and JSONL files
Session history (session_history.jsonl)
Append-only JSONL log of session lifecycle events.
Event types:
session_history.jsonl
Current session (sessions.json)
Plain text file containing the current session ID. Despite the
.json extension, it is not JSON — it contains only the raw session
ID string.
Fork messages (fork_messages.json)
JSON array tracking Discord messages associated with active forks.
Records expire after 7 days (604,800 seconds). Expired entries are filtered out on read.
Pending updates (pending_updates.json)
JSON array of updates written by background forks for the main session.
Main sessions pop (read + clear) pending updates on the next
interaction. Interactive forks peek (read-only). Writes are protected
by a lock to prevent concurrent corruption.
Inquiries (inquiries.json)
JSON object mapping 8-character hex UUIDs to button inquiry entries.
Persists inquiry prompts so agent-created buttons survive bot restarts.
Records expire after 7 days. Expired entries are filtered out on read.
inquiries.json
Ping budget (ping_budget.json)
JSON object tracking the refill-on-read ping budget for background forks.
Runtime configuration (config.json)
JSON object storing persistent settings you configure via the /config slash command.
config.json
The JSON keys use underscores (
model_main), while the /config slash command displays them with dots (model.main). The command translates between the two formats automatically.Next steps
Data directory
Full layout of the
~/.ollim-bot/ directory structure.Configuration reference
Environment variables and configuration options.
Routines
How to create and manage recurring routines.
Webhooks
External triggers and webhook spec files.
