Skip to Content
DocumentationFirst-Party AppsπŸ“‹ Companion Planning

πŸ“‹ Companion Planning

Plan your days, privately. A local-first todo and planning app β€” tasks, time blocks, tags, an auto-scheduler, and review-queue automation β€” all in one SQLite file on your own Hub.

Install & availability

Available now. Install from the Companion Hub App Store. Runs entirely on your Hub; works without any cloud account.

Hub App StoreSearch Companion Planning (app id ci-planning) β†’ Install
Container imageghcr.io/companionintelligence/ci-planning:latest (public)
Internal port3848
Architecturelinux/amd64 and linux/arm64 (multi-arch)
PersistenceSQLite at DB_PATH=/data/companion.db

Overview

Companion Planning is a private, local-first planning app. It manages your tasks, time blocks, and tags, and includes an auto-scheduler and review-queue automation β€” all stored in a single SQLite file on your Hub. The frontend is a SolidJS PWA and the backend is a Koa API, served together on one port.

Everything is deterministic without AI. If you connect Ollama, Companion Planning layers on optional intelligence β€” a generated day briefing, task extraction from email/calendar, and embedding-based dedupe β€” and degrades gracefully to its deterministic behavior when AI is unavailable.

Current capabilities

What Companion Planning does today, as shipped:

  • Tasks, time blocks, and tags in a single SQLite database
  • Auto-scheduler that lays tasks into your day
  • Review-queue automation β€” proposals collect in an Inbox until you promote them
  • Background jobs for ingestion, grooming, and scheduling (see below)
  • REST API + SSE so agents and other tools can read and drive your plan
  • Optional Ollama for AI assistance, with deterministic fallbacks throughout

Persistence

State lives in one SQLite file at DB_PATH (default /data/companion.db). The Hub mounts ${APP_DATA_DIR}/data to /data, so back up that directory to back up everything β€” tasks, blocks, tags, and history.

Configuration

VariablePurpose
PORTHTTP port (internal 3848)
DB_PATHSQLite file path (default /data/companion.db)
OLLAMA_URLOllama endpoint (Hub wires ${APP_OLLAMA_URL}); optional
OLLAMA_SMALL / OLLAMA_MEDIUM / OLLAMA_EMBEDModels for small/medium generation and embeddings
TZTimezone β€” set this so β€œtoday” and cron jobs match your local time
GOOGLE_MODEControls Google (gmail/gcal) ingestion behavior
LOG_LEVELLog verbosity

Set TZ. β€œToday,” day boundaries, and the scheduled jobs all key off the timezone. If TZ is wrong, your day briefing and 2am/3am jobs will run against the wrong calendar day.

Optional AI (Ollama)

Ollama is optional and gracefully degraded. With it connected, Companion Planning can:

  • Generate an AI day briefing
  • Extract tasks from email and calendar items
  • Dedupe similar tasks using embeddings

Without Ollama, all of these fall back to deterministic behavior, and Settings shows the live AI status so you always know which mode you’re in.

Background jobs

Companion Planning runs scheduled jobs you can view and trigger manually from the Jobs view:

JobCadenceWhat it does
Gmail / Google Calendar ingestionevery 30 minPulls in mail and calendar items
Nightly grooming + task promotion2:00 AMCleans up and promotes tasks
Auto-schedule3:00 AMLays tasks into the day

Proposals produced by these jobs land in the Inbox and stay there until you promote them into your plan. Job timing follows TZ.

REST API for agents

Companion Planning exposes an HTTP API so agents and scripts can read and act on your plan:

EndpointPurpose
GET /api/tasksList/read tasks
GET /api/blocksList/read time blocks
GET /api/summaryPlan summary
POST /api/schedule/runTrigger the auto-scheduler
GET /api/events (SSE)Live event stream

Use Cases

  • Keep a private, local todo list with time-blocked days and tags
  • Let the auto-scheduler lay out your day from your task list
  • Turn email and calendar items into draft tasks (with Ollama) for review in the Inbox
  • Drive your plan from a Companion Agent via the REST API and SSE stream

Setup

Install from Hub

Search for Companion Planning (ci-planning) in the Hub app store and install. The Hub mounts ${APP_DATA_DIR}/data to /data for persistence.

Set your timezone

Set TZ to your local timezone so β€œtoday” and the nightly jobs run on the correct day.

(Optional) Connect Ollama

The Hub wires ${APP_OLLAMA_URL} into OLLAMA_URL. Set OLLAMA_SMALL / OLLAMA_MEDIUM / OLLAMA_EMBED to enable the day briefing, task extraction, and embedding dedupe. Skip this to run fully deterministically.

Review the Inbox

As ingestion and grooming run, proposals collect in the Inbox. Promote the ones you want into your plan.

Troubleshooting

β€œToday” looks off / jobs run at the wrong time TZ is likely unset or wrong. Set it to your local timezone and restart.

AI features aren’t doing anything Ollama is optional β€” check Settings for the live AI status. Without it, the app runs deterministically by design.

My data disappeared after an update State is the SQLite file at DB_PATH under the mounted /data. Ensure ${APP_DATA_DIR}/data is persisted and backed up.

Proposals never appear in my plan Ingestion/grooming proposals stay in the Inbox until you promote them. Promote items to move them into the plan.

Last updated on