A lightweight, self-hosted task management system for families, optimized for natural interaction with AI assistants.
Important
Work-in-Progress! Not production ready.
Instead of wrestling with complex task apps, talk naturally to your AI assistant: "We're planning to renovate the kitchen. Help me organize the tasks." The AI creates and manages tasks via CLI while the family sees a live browser view.
┌──────────────┐ ┌──────────────┐
│ AI Assistant │ ── TCP/JSON ─────> │ kid-server │
│ (kid CLI) │ │ │
└──────────────┘ │ ┌────────┐ │
│ │ Tasks │ │
┌──────────────┐ │ │(Files) │ │
│ Family │ ──── HTTP ──────> │ └────────┘ │
│ (Browser) │ └──────────────┘
└──────────────┘
See Mental Load Analysis (in German) for the background research behind this idea.
- File-based storage — tasks as JSON files, no database needed
- Mobile-first browser view — scrollable task list with expandable details
- CLI for AI integration — typed RPC over TCP, JSON output
- Privacy first — everything stays on your home network
- Zero infrastructure — runs on a Raspberry Pi or any home server
kid itself keeps all data on your home network. However, task content is shared with whichever LLM your assistant uses — cloud models (Claude, ChatGPT) send it to an external API, while local models via Ollama keep everything on your own hardware.
OpenClaw is a self-hosted personal assistant (WhatsApp, Telegram, Signal, and many more channels) that can front either type of LLM.
# Start the server
cargo run --bin kid-server
# In another terminal
cargo run --bin kid -- add --summary "Test the system"
cargo run --bin kid -- list
# Open browser
open http://localhost:3000Four views, switchable by swipe or tap:
Each task can carry: summary, priority (A/B/C), due date, start date, time estimate, context, and notes. Dates accept both precise timestamps and free-text estimates ("next Friday").
kid list
kid add --summary "Buy paint" --priority B --estimate "2h" --context "Kitchen"
kid rename --id <uuid> --summary "New summary"
kid update --id <uuid> --details '{"priority": "A"}'
kid replace --id <uuid> --details '{...}'
kid complete --id <uuid> # mark done
kid complete --id <uuid> --reopen # reopen
kid schema # print JSON Schema for task detailskid/
├── types/ # kid-types: shared types, RPC trait, storage
├── app/ # kid-app: Leptos UI (SSR + WASM)
├── frontend/ # kid-frontend: WASM binary
├── server/ # kid-server: Axum + Leptos + tarpc listener
└── cli/ # kid-cli: `kid` binary
See Architecture Overview for details.
- Rust (stable)
- Unix-like system (Linux, macOS)
AGPL-3.0




