AtlatestRenderedmarkdown
Readme
Minder
Scheduled task channel server for Claude Code sessions, built with Sigil.
Architecture
Minder is an MCP channel server that manages cron-based scheduled tasks and pushes events into a running Claude Code session via the claude/channel protocol.
minder/
├── package.sgl # Package definition
├── dev-redirects.sgl # Points deps at local sigil + sigil-later
├── minder.yaml # Schedules (optional)
├── src/minder/
│ ├── main.sgl # Entry point: channel MCP server
│ ├── config.sgl # Config loading (YAML)
│ └── scheduler.sgl # Cron scheduling via sigil-later
└── test/
└── test-config.sglConfiguration
Schedules via minder.yaml:
schedules:
check-services:
cron: "*/30 * * * *"
prompt: "Check service health"Dependencies
- sigil-mcp — MCP server framework (channel notifications)
- sigil-later — Cron-based task scheduling
- sigil-yaml — Config file parsing
- sigil-log — Structured logging
Building
Always build within a Guix shell:
guix shell -m ../sigil/manifest.scm -- env CC=gcc \
../sigil/build/release/bin/sigil build --redirects dev-redirects.sglTesting
guix shell -m ../sigil/manifest.scm -- env CC=gcc \
../sigil/build/release/bin/sigil -L build/dev/lib test --redirects dev-redirects.sglRunning
Minder is designed to be spawned by Claude Code as a channel MCP server:
claude --channels server:minderRegister it in .mcp.json:
{
"mcpServers": {
"minder": {
"command": "./build/dev/bin/minder",
"env": {}
}
}
}Stale Cache
After rebuilding, clear the global module cache:
rm -rf ~/.cache/sigil/lib/0.7.0/minder/Key Implementation Notes
- YAML dict keys from
yaml-decodeare keywords — usekeyword->string - Struct constructors match the struct name (not
make-prefixed) - The MCP server loop runs inside
with-asyncso scheduler goroutines can interleave with stdin reads channel-notify!from(sigil mcp channel)sends channel events- sigil-later tasks spawn their own goroutines via
later-every!