Show HN: Edi Life OS – self-hosted life dashboard with an MCP server for AI
Edi Life OS is a self-hosted dashboard (PHP 8.1+, MySQL, vanilla JavaScript) that combines focus timer, habits, goals, Kanban tasks, finances and notes in ten workspaces. It includes an optional Node.js MCP server that exposes 15 tools over stdio. The tools let Claude Desktop, Claude Code or Codex read the dashboard, create goals and tasks, log habits and record expenses. The MCP server calls only the app's bearer-token /api/v1 HTTP API and never touches the database or credentials. The README is candid about limits: the token has no scopes, there is no app-level rate limiting, and the secret-note flag is only a visibility setting, not encryption.
What it claims
A single-owner, MIT-licensed life dashboard that runs on any PHP + MySQL host, including cheap shared hosting, with no frontend build step and no framework. Its optional MCP server is stdio-only; the page says "there is no hosted MCP endpoint", so the AI client must run on a machine that can reach your app's HTTPS API. Two hardcoded defaults matter if you are not the author: dates follow Asia/Tehran, and the weather card shows Qeshm Island via Open-Meteo, with a tide figure the page calls a modeled estimate.
How it works
flowchart LR B[Browser] -->|session sign-in| A[PHP app] C[Claude / Codex] -->|stdio| M[Node MCP server] M -->|Bearer token, /api/v1| A A --> D[(MySQL)] A --> F[Attachment files]
- The browser sign-in and the API bearer token are separate credentials that both reach the same app.
- Habits use dedicated tables. The other workspaces store JSON documents in a single
app_statetable. - Saves use revision checks, so a stale tab cannot silently overwrite newer data. API writes use transactions and row locks.
- Data from older browser-only versions is imported once. Conflicting copies are archived as
legacy_backup_*records. - A migration path exists from the author's earlier Habittify SQLite database.
How to use it
Docker. The app listens on localhost:8080. MySQL, the app and attachments each get their own volume, so after a git pull you upgrade with docker compose up -d --build.
git clone https://github.com/edrisranjbar/lifeos.git && cd lifeos
cp .env.example .env # set your sign-in and passwords
docker compose up -dShared hosting. Extract lifeos-<version>.zip from the latest release into your hosting home directory. public_html/ becomes the web root and the backend sits above it. Then copy config.example.php to config.php and fill in your MySQL details.
Local. Requires PHP 8.1+ with pdo_mysql and mbstring, plus MySQL 8+ or MariaDB 10.4+. Tables are created on first use.
cp config.example.php config.php
php -S localhost:8000 -t public_html server.phpAPI token. Generate a token, then set it as api_token in config.php or as LIFEOS_API_TOKEN:
php -r "echo bin2hex(random_bytes(32));"
curl -H "Authorization: Bearer $LIFEOS_API_TOKEN" https://your-host/api/v1/dashboardMCP server.
cd mcp
npm ci
cp .env.example .env # set LIFEOS_BASE_URL and LIFEOS_API_TOKEN
npm startClient configuration for Claude and Codex is in the repo's MCP guide, not on this page.
Limits
- The app is built for one owner. There are no multi-user accounts.
- The token has read and write access to every domain. Since there is no app-level rate limiting, the page tells you to set request limits at the hosting layer.
- Use HTTPS anywhere other than localhost.
- Secret notes are hidden from API reads by default, but they are not encrypted.
- Backups must cover three things together: the database, the attachment files and the configuration. The database alone is not enough.
- The timezone and weather location are fixed to the author's locale. The page does not say whether they can be configured. The example prompts also use Toman as the currency, so check localisation before you adopt it.
- The repo has a
tests/directory (timer, API, MySQL, integration), but the page reports no test results.
Organisations named here
- Claude Code
- Edris Ranjbar
Technologies named here
- Edi Life OS
- Edi Life OS MCP server
- Claude Desktop
- Claude Code
- Codex
- Model Context Protocol
- Docker Compose
- Open-Meteo
- Node.js
- MySQL
- Docker
- JavaScript
- PHP
Techniques named here
- MCP server wrapping a token-protected HTTP API
Related in mcp

OKX Agent Trade Kit (okx-trade-mcp / okx-trade-cli)
