helm-personal-os

helm-personal-os

Provides MCP tools to read and update a local-first personal OS for goals, tasks, habits, food, workouts, and check-ins. Enables assistants to manage daily life data and interact with an evidence-grounded AI coach.

Category
Visit Server

README

Helm Personal OS

Helm is a local-first personal operating system for connecting long-term direction to everyday action. It brings goals, kanban tasks, habits, food, workouts, check-ins, and an evidence-grounded AI coach into one self-hosted web app. Many of the same records are available through Model Context Protocol (MCP) tools, so a compatible assistant can read and update the system with explicit tool calls.

Project stage: early, macOS-first, and designed for one operator. Helm is not a hosted service, team workspace, medical device, or substitute for professional advice.

What is included

  • Goals and coaching: vision, nested goals, success criteria, obstacles, goal links, coaching preferences, and morning/midday/evening/weekly review records.
  • Planning: boards, columns, cards, tags, due dates, and a unified today view.
  • Habits and health logs: scheduled habits with explicit achieved/not-achieved outcomes, meals and macro estimates, body weight, activities, workout routines, sets, rest timers, history, and progression suggestions.
  • Calendar: Google Calendar sync and event storage are retained end-to-end and reachable through the API and MCP tools; it is not surfaced in the simplified web navigation (no Calendar tab today — see Known limitations).
  • Extensibility: retained custom-module and saved-agent APIs, web/CLI chat surfaces, and stdio or loopback HTTP MCP transports. The simplified web navigation currently focuses on Tasks, Food, Habits, Workouts, and Coach rather than exposing every retained subsystem.
  • Local persistence: SQLite data on the operator's machine, with bearer-token API authentication and a first-run password for the browser UI.

The non-AI records and workflows do not require an AI account. AI-backed requests are not local-only: they send selected prompt context to the configured provider. See Privacy.

Screenshots and demo

All screens below show the fictional "Port Aurora" workspace produced by scripts/create-demo-workspace.mjs — synthetic demo data only, never a real operator's records.

Today view: a daily command meeting, closeout, and vision review, with active goals, today's habits, and recent reflections Coach vision tab: a north-star narrative, an identity statement, and a values list
Today — the daily command meeting, closeout, and vision review, plus active goals, today's habits, and recent reflections. Coach — the vision layer: north star, identity statement, and values that anchor the coach's context.
Tasks board with Next, In Progress, and Done columns holding fictional studio-project cards Side-by-side composite: a habits list with logged minutes and pages, and a completed workout history card
Tasks — simple kanban boards for work and life. Habits and Workouts — a clearly labelled two-panel composite of two real screens: scheduled habits with logged quantities and completed workout history.

Demo video: docs/assets/helm-demo.mp4 (85 seconds, 1280x720, H.264, captioned, deliberately silent — GitHub's Markdown viewer does not play back repository-hosted video, so this is a direct link rather than an embed). It walks through vision and goals, the daily command meeting and if/then obstacle plans, typing a message to the coach (not sent — no AI provider is called in the demo), logging habits/workouts/food, and an evidence-backed weekly review, all against the same synthetic workspace.

Regenerate both with npm run demo:assets (see Reproducing the demo assets).

Quick start for development

Requirements: macOS, Node.js 20+, npm, and Git.

npm ci
npm run build
npm start

Open http://127.0.0.1:8787 and create the first local password. The server binds to 127.0.0.1 by default. Application data is created under server/data/; local credentials are created outside the database and are excluded from source control.

For separate watch processes during development:

npm run dev:server
npm run dev:web

The Vite development server proxies API requests to http://127.0.0.1:8787 by default.

macOS installation

The portable installer stages dependencies and the frontend before replacing an installation, can register a per-user LaunchAgent, and refuses to overwrite an existing installation unless --upgrade is supplied.

./install-helm.sh --dry-run
./install-helm.sh

The default destination is ~/Helm, and the default service URL is http://127.0.0.1:8787. Read HERMES-INSTALL.md before using an archive or upgrade. To connect an assistant after installation, use the Agent integrations guide.

AI backends: Claude Code versus API

Helm's default in-app AI backend (sdk) uses the Claude Agent SDK with credentials from a local Claude Code login (claude on the machine running Helm; run claude auth login). This can use an eligible Claude subscription; it is not the same as making requests with an Anthropic API key. Helm disables the SDK's local file and shell tools for in-app chat and supplies Helm operations through an in-process MCP server.

Set LLM_BACKEND=api to select the alternative Anthropic Messages API path. That path requires ANTHROPIC_API_KEY and may incur API charges under the operator's Anthropic account. An API key is also used for optional short API-only operations such as automatic conversation titles. In either mode, request content is processed outside the host by Anthropic.

Selecting a backend is not the same as it being configured. Helm does not assume the sdk backend works just because it's the default — the server verifies local Claude Code auth with a bounded claude auth status check (a few seconds max) and caches the result briefly (HELM_AUTH_STATUS_TTL_MS, default 30s) so it isn't re-run on every request. No inference call is ever made just to check status, on either backend. GET /api/chat/status and the Coach chat banner report one of: ready, or unconfigured with a specific, actionable reason — CLI not installed, not signed in, sign-in expired, status check timed out, or (API backend) no ANTHROPIC_API_KEY set. Core Helm surfaces (Tasks, Food, Habits, Workouts, non-AI chat CRUD) stay usable in every one of these states, as does the API/MCP-only Calendar sync (not surfaced in the simplified web navigation); only sending a message to the coach requires the backend to be configured.

If the provider itself fails mid-conversation (expired auth, an unavailable model, rate limiting, or any other provider error), Helm maps the failure to one of a small fixed set of safe, actionable messages sent to the browser. Raw provider response bodies, stack traces, and API keys are never sent to the client, stored in chat history, or written to the server log — arbitrary secrets can't be reliably scrubbed after the fact, so the server logs only a closed set of non-sensitive fields (an error category and, when available, the HTTP status) rather than the raw text. If a conversation's model is no longer available on the active backend (e.g. after switching backends, or an old stored model id), Helm falls back to a documented default model for that turn instead of failing silently.

Documentation

Verification

npm run check
npm run package:portable

npm run check runs the Node test suite, production frontend build, public metadata and privacy checks, forbidden-path scan, reproducible portable-package build and inspection, an independent secret scan, and the production dependency audit. It writes the verified blank-data archive and checksum under dist/; it does not package an operator's database or credentials.

Known limits

  • macOS is the supported installation target today; other operating systems are not claimed to work.
  • The current security and data model assumes a single trusted operator on a trusted host.
  • Loopback binding reduces accidental network exposure but does not protect against another process or user with sufficient host access.
  • SQLite files, local logs, exports, and backups are not application-level encrypted by Helm.
  • Optional calendar, AI, MCP, notification, and messaging integrations create additional provider and credential boundaries.

License

Helm-authored source is available under the MIT License. Dependencies retain their own licenses. The Anthropic Claude Agent SDK is separately licensed proprietary software and is not covered by Helm's MIT license; see Third-party licenses.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured