konbu
Enables sending email reminders for events and todos via Brevo's SMTP relay.
Enables attachment storage using Cloudflare R2.
Allows creating anonymized feedback issues on a GitHub repository.
Allows receiving GitHub Sponsors webhook events.
Allows authentication via Google OAuth.
Allows importing events from Google Calendar.
Allows using OpenAI's API for AI-powered chat interface within the planner.
Allows managing subscription billing via Stripe Checkout and webhooks.
Try It
Cloud -- Use instantly at konbu-cloud.codenica.dev (free, no setup)
Self-hosted -- Run on your own server with Docker (see below)
What is konbu?
konbu is a personal digital planner — a Filofax-style system planner, digitized. A self-hostable Go binary that binds your memos, todos, schedule, and structured tables into one notebook, kept by an AI butler, and surfaces everything from a single search interface. It's yours alone — nothing is ever shared out. Not a replacement for Notion + Todoist + Calendar — a replacement for the act of searching four apps to find one thing.
What's different:
Native MCP server + CLI client -- Two parallel routes for the AI butler (Claude / Cursor / any MCP client) or shell / scripts to operate your planner.
Cross-resource full-text search -- One query across memos, todos, events, and structured tables. This is the core UX, not a side feature.
Structured tables (= table-memo, planned) -- Track blood pressure, household budgets, or inventory. Markdown can't express these; tables can.
BYOK AI chat -- Bring your own OpenAI/Anthropic API key, or use the included free tier.
Personal by design -- One notebook, for you only. Pulls in from outside (Google Calendar), never leaks out.
Self-hostable -- One Go binary, Docker compose, or use the hosted version.
End the state of having your day scattered across four different apps.
Features
Cross-resource Full-text Search -- Search across memos, todos, events, and structured tables in one query (core UX)
CLI & MCP Server -- Built-in CLI client and MCP server. AI agents like Claude and Cursor can read and write your data directly
AI Agent Chat -- "Add groceries to my todo" "What's on my schedule tomorrow?" in natural language. BYOK supported, free tier included
Memos -- Markdown notes with tagging, live preview
ToDo -- Inline task creation with due dates, tags, and notes
Calendar -- Monthly view with event CRUD and iCal import (personal, owner-only)
Structured Tables (= table-memo, planned) -- Track structured data (blood pressure, household budget, inventory) as rows × columns
Export/Import -- JSON export, Markdown ZIP export, iCal import
i18n -- English and Japanese
Quick Start
cp .env.example .env
docker compose up -dOpen http://localhost:8080 and create your account. The dev compose file sets DEV_USER=dev@local to skip registration.
Production (with Traefik)
# Edit .env with real credentials and your domain
docker compose -f docker-compose.prod.yml up -dNative (without Docker)
# Prerequisites: Go 1.25+, Node.js 22+, PostgreSQL 16+
# Build frontend
cd web/frontend && npm ci && npm run build && cd ../..
# Build server
go build -o bin/server ./cmd/server
# Start (runs all SQL migrations automatically on boot)
DATABASE_URL="postgres://..." SESSION_SECRET="..." ./bin/serverConfiguration
Variable | Required | Default | Description |
| Yes | -- | PostgreSQL connection string |
| Yes | dev fallback | Session signing key |
| No |
| Server port |
| No | -- | Auto-login as this email (dev only) |
| No | -- | Set |
| No | -- | Public app URL used for OAuth callbacks |
| No | -- | Enable Google OAuth login |
| No | -- | Enable Google OAuth login |
| No | -- | GitHub Sponsors webhook secret |
| No | -- | Enable Stripe checkout and subscription billing |
| No | -- | Verify incoming Stripe webhook events |
| No | -- | Stripe Price ID used for monthly Pro checkout |
| No | -- | Stripe Price ID used for yearly Pro checkout |
| No | -- | GitHub token used to create anonymized feedback issues |
| No | -- | Repository to receive feedback issues, e.g. |
| No | -- | Comma-separated labels added to forwarded feedback issues |
| No | -- | 64 hex chars used to encrypt BYOK AI keys |
| No |
| Server-side free-tier AI provider |
| No | -- | Server-side free-tier AI key |
| No | -- | Override free-tier provider endpoint |
| No | -- | Override free-tier provider model |
| No | -- | Attachment upload credentials |
| No | -- | Attachment upload credentials |
| No | Cloudflare R2 default | Attachment storage endpoint |
| No |
| Attachment storage bucket |
| No | -- | Optional public base URL for attachments |
| No | -- | SMTP relay host for reminder emails (e.g. |
| No | -- | SMTP relay port (typically |
| No | -- | SMTP relay login |
| No | -- | SMTP relay password / API key |
| No | -- | From address for outgoing reminder emails |
| No |
| Notification sweep interval (Go duration, e.g. |
Reminders / notifications
When the SMTP_* variables above are all set, the server starts a single in-process sweep loop that sends email reminders for upcoming events and due ToDos. Each user opts in via Settings (user_settings.notifications.enabled = true) and can override the recipient email, lead time, due-time, and timezone.
Notifications are a server-only feature — they run inside the API server process and require PostgreSQL. The MCP --standalone mode (SQLite) does not send reminders.
Docker Compose (prod) variables
Variable | Description |
| PostgreSQL password |
| Domain for Traefik TLS routing |
CLI
The CLI is a standalone client that connects to a remote konbu server via API. Server code is not included in the CLI binary.
go install github.com/krtw00/konbu/cmd/konbu@latestSetup
# Set environment variables (recommended: add to ~/.zshrc or ~/.bashrc)
export KONBU_API=https://konbu.example.com
export KONBU_API_KEY=your-api-key
# Or pass as flags
konbu --api https://... --api-key your-key memo listGenerate an API key in Settings > Security on the web UI.
Commands
All commands support --json flag for machine-readable output.
konbu memo list # List memos
konbu memo show <id> # Show memo content
konbu memo add "title" -c "content" # Create memo (-c - for stdin)
konbu memo edit <id> --title "new" # Update memo
konbu memo rm <id> # Delete memo
konbu todo list # List todos
konbu todo show <id> # Show todo details
konbu todo add "task" -t "tag1,tag2" # Create todo
konbu todo add "task" -d 2025-04-01 # Create with due date
konbu todo edit <id> --desc "notes" # Update todo
konbu todo done <id> # Mark done
konbu todo reopen <id> # Reopen
konbu todo rm <id> # Delete
konbu event list # List events
konbu event show <id> # Show event details
konbu event add "title" -s <RFC3339> # Create event
konbu event edit <id> --title "new" # Update event
konbu event rm <id> # Delete
konbu tag list # List tags
konbu tag rm <id> # Delete tag
konbu search "query" # Cross-search
konbu api-key list # List API keys
konbu api-key create "key-name" # Create API key
konbu api-key rm <id> # Delete API key
konbu export json -o backup.json # Export as JSON
konbu export markdown -o backup.zip # Export as Markdown ZIP
konbu import ical calendar.ics # Import iCal fileShort IDs (first 8 chars) can be used in place of full UUIDs.
MCP Server
konbu can run as a built-in MCP (Model Context Protocol) server in two modes — pick whichever fits.
Standalone mode (SQLite, no server required)
If you just want konbu as a local MCP backend for Claude Desktop, Cursor, or any MCP client, install the CLI and run it with --standalone. No PostgreSQL, no web server, no API key — everything is stored in a local SQLite file.
go install github.com/krtw00/konbu/cmd/konbu@latest
konbu mcp --standaloneData is persisted at ~/.konbu/konbu.db by default. Override with --db /path/to/db.sqlite if needed.
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"konbu": {
"command": "konbu",
"args": ["mcp", "--standalone"]
}
}
}Cursor accepts the same config at ~/.cursor/mcp.json (or via the settings UI).
Docker
A multi-arch image (linux/amd64, linux/arm64) is published to GitHub Container Registry. Pull it directly — no build step needed:
docker pull ghcr.io/krtw00/konbu-mcp:latestFor reproducible setups, pin to a release tag instead — e.g. docker pull ghcr.io/krtw00/konbu-mcp:v0.2.0.
Then point your MCP client at it. Data persists in a named volume:
{
"mcpServers": {
"konbu": {
"command": "docker",
"args": ["run", "--rm", "-i", "-v", "konbu-data:/data", "ghcr.io/krtw00/konbu-mcp:latest"]
}
}
}Prefer building from source? docker build -f docker/Dockerfile.mcp -t konbu-mcp . from the repo root produces the same image (CGO-free, distroless static, ~22 MB).
Standalone mode exposes memo / todo / calendar event CRUD plus cross-resource search. Tags, attachments, and AI chat are server-only (use the connected mode below for those).
Connected mode (talk to a konbu server)
If you're running a konbu server (self-hosted or konbu Cloud), point the MCP server at it over HTTP. You get the full feature set: tags, attachments, and AI chat.
Install the
konbuCLI binary (see CLI section above)Generate an API key in Settings > Security on the web UI
Add konbu to your MCP client config:
{
"mcpServers": {
"konbu": {
"command": "konbu",
"args": ["mcp"],
"env": {
"KONBU_API": "http://localhost:8080",
"KONBU_API_KEY": "your-api-key"
}
}
}
}Usage examples
After restarting your MCP client, interact with konbu in natural language:
"What's on my schedule tomorrow?"
"Add a dentist appointment next Friday at 1pm"
"Create a todo to buy groceries with tag 'shopping'"
"Show me notes tagged 'meeting' from last week"
"Mark the 'review PR' todo as done"
API
Base path: /api/v1
Resource | Endpoints |
Auth |
|
User |
|
API Keys |
|
Memos |
|
ToDos |
|
Events |
|
Calendars |
|
Tags |
|
Search |
|
Chat |
|
Attachments |
|
Export |
|
Import |
|
Development
# Start PostgreSQL
docker compose up -d postgres
# Frontend dev server
cd web/frontend && npm run dev
# Run server
DEV_USER=dev@local go run ./cmd/server
# Build CLI
go build -o bin/konbu ./cmd/konbu
# Run tests
go test ./...
cd web/frontend && npm test
cd web/frontend && npm run test:e2eProject Structure
cmd/
server/ # API server
konbu/ # CLI client
internal/
handler/ # HTTP handlers
service/ # Business logic
repository/ # DB access (sqlc)
middleware/ # Auth, logging
client/ # API client (used by CLI)
mcp/ # MCP server
web/frontend/ # React + Vite SPA
sql/ # Schema and migrations
docker/ # DockerfileRoadmap
Browser push reminders (email reminders are already supported when
SMTP_*env is configured)Mobile UI improvements
CI test coverage
AI chat enhancements (context improvements, new model support)
Sponsors
If you find konbu useful, consider sponsoring the project.
License
Maintenance
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/krtw00/konbu'
If you have feedback or need assistance with the MCP directory API, please join our Discord server