AdventedHUD
Projects tasks and events to Google Calendar on approval.
Projects tasks to Google Tasks on approval.
Persists classified items to an Obsidian vault as the source of truth.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AdventedHUDbrief my daily roles and goals"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AdventedHUD
Agent-Driven Personal Planner — MCP Service (v1.4.1)
AdventedHUD is an MCP service that turns an LLM agent into a personal planner. It provides agents with atomic context (your roles, goals, mission, and a FranklinCovey decision matrix) and routes classified items to Obsidian as the source of truth, with optional projection to Google Calendar and Google Tasks.
Exposes HTTP routes and JSON-RPC MCP on port 8200 by default.
Table of Contents
Related MCP server: Obsidian MCP Server
Architecture
AdventedHUD was built to slot into a three-layer architecture, with AdventedOS as the reference deployment. The diagram below shows the full flow and where each component lives.
+------------------------------------------------------------------+
| Agent / LLM |
| (Claude, GPT, or any MCP-capable model that can call |
| tools sequentially based on mcp_meta instructions) |
+---------------------------+--------------------------------------+
| JSON-RPC MCP (hud.brief, hud.ingest,
| hud.project, hud.onboarding, hud.mcp)
v
+------------------------------------------------------------------+
| Open WebUI (OWUI) -- Optional UI |
| Tool server layer. Discovers tools from HUD's /openapi.json |
| Manages conversation state, user auth to the proxy. |
+---------------------------+--------------------------------------+
| HTTP (routed through proxy)
v
+------------------------------------------------------------------+
| AdventedOS Proxy (port 52415) |
| Reference auth gateway -- handles: |
| * MCP tool discovery (proxies /openapi.json from HUD) |
| * API key injection & credential management |
| * Route orchestration (HUD, model inference, etc.) |
| Not required to run HUD -- any reverse proxy or direct |
| HTTP access works. |
+---------------------------+--------------------------------------+
| HTTP / JSON-RPC (X-HUD-Admin-Key)
v
+------------------------------------------------------------------+
| AdventedHUD (port 8200) |
| |
| +----------+ +----------+ +----------+ +---------------+ |
| | Brief | | Ingest | | Project | | Onboarding | |
| | (context)| | (create) | |(approve/ | | (soul + | |
| | | | | | reject) | | atomic) | |
| +----+-----+ +----+-----+ +----+-----+ +-------+------+ |
| | | | | |
| +-------------+-------------+-----------------+ |
| | | |
| v v |
| +------------------------------+ |
| | Ingest/Project Pipeline | |
| | (classification gate, | |
| | projection dispatch) | |
| +---------------+--------------+ |
+-------------------------------+----------------------------------+
|
+------------------+------------------+
v v v
+--------------------+ +--------------+ +--------------+
| Obsidian | | Google | | Google |
| Vault | | Calendar | | Tasks |
| (source of | | (projected) | | (projected) |
| truth) | | | | |
+--------------------+ +--------------+ +--------------+Flow Summary
Agent classifies user input using context from
hud.brief(roles, goals, decision matrix)Agent calls
hud.ingestwith classified item (role_ref, goal_ref, priority_class, semantic_type, google_target)HUD persists to Obsidian first -- that's the source of truth
On approval, HUD projects to Google Calendar/Tasks via OAuth
The AdventedOS proxy sits between OWUI and HUD when deployed in reference mode -- handling auth, key injection, and route orchestration
Quick Start
Requirements
Docker (recommended) or Python 3.10+
A Google Cloud project with Calendar and Tasks APIs enabled (for projection -- optional)
An Obsidian vault (optional -- HUD creates one)
Install & Run (Docker)
# Clone the repo
git clone https://github.com/av151318/AdventedHUD.git
cd AdventedHUD
# Build the image
docker build -t adventedhud .
# Run with defaults (port 8200)
docker run -d -p 8200:8200 \
-e HUD_ADMIN_API_KEY=your-secret-key \
--name adventedhud \
adventedhud# Verify it's alive
curl -sS http://127.0.0.1:8200/healthTo pass additional environment variables, append -e VAR=value flags to the docker run command. For persistent data, mount a volume:
docker run -d -p 8200:8200 \
-e HUD_ADMIN_API_KEY=your-secret-key \
-e HUD_ALLOW_WRITES=true \
-v /path/to/data:/app/data \
--name adventedhud \
adventedhudInstall & Run (native)
# Clone the repo
git clone https://github.com/av151318/AdventedHUD.git
cd AdventedHUD
pip install -r requirements.txt
export HUD_ADMIN_API_KEY=your-secret-key
python -m hud.mainWire Up an Agent
HUD's primary interface is JSON-RPC MCP. An agent calls five methods:
curl -sS -X POST http://127.0.0.1:8200/hud/mcp \
-H 'Content-Type: application/json' \
-H "X-HUD-Admin-Key: $HUD_ADMIN_API_KEY" \
-d '{"jsonrpc":"2.0","method":"hud.brief"}'To expose HUD's tools to Open WebUI or another OpenAPI-compatible tool server, point it at:
http://your-host:8200/openapi.jsonFor AdventedOS reference deployment: the proxy at port 52415 handles this discovery automatically and injects the admin key. See AdventedOS Context.
Google OAuth Setup (for Calendar/Tasks Projection)
Create a Google Cloud Platform project
Enable Google Calendar API and Google Tasks API
Create OAuth 2.0 credentials (Desktop application type)
Download as
gOAuth1.jsonand place in yourdata/directory, or use env vars:
export GOOGLE_OAUTH_CREDENTIAL_ID=your-client-id
export GOOGLE_OAUTH_CREDENTIAL_SECRET=your-client-secretFor token encryption, set:
export GOOGLE_TOKEN_ENCRYPTION_KEY=your-secure-random-keyDefault projection mode is dry_run -- no data touches Google until you explicitly set it to live and approve items.
Environment Reference
Variable | Default | Purpose |
|
| Listen port |
|
| Bind address |
|
| SQLite store |
| (required) |
|
|
| Root for OAuth credentials, Obsidian vault, DB |
|
| Onboarding soul file |
| (optional) | Worksheet template for onboarding read |
|
| Set |
|
| Set |
|
| Enable file/DB writes (startup safety) |
|
| Enable Google Calendar/Tasks projection |
|
| Log verbosity |
| (env hint) | OAuth client ID |
| (env hint) | Path to OAuth JSON file |
| (env hint) | Dir to search for gOAuth*.json |
| (env hint) | Inline OAuth JSON string |
| (default placeholder) | Key for encrypting stored OAuth tokens |
| (env hint) | Path to token JSON file |
Credential Resolution Order
HUD resolves Google OAuth credentials in this priority:
Inline payload --
oauth_credentialsfield passed in the requestEnvironment hints --
GOOGLE_OAUTH_CREDENTIAL_ID,GOOGLE_OAUTH_CREDENTIAL_FILE, etc.File discovery -- scans
data/forgOAuth1.json,gOAuth2.json, andgOAuth*.jsonfiles
Tokens are resolved similarly: inline -> env var -> file scan for *.token.json in data/.
MCP Tool Surface
HUD exposes a five-tool JSON-RPC surface through a single endpoint (/hud/mcp), plus decomposed first-class HTTP paths for direct access.
Core Tools
Method | Purpose | Agent Use |
| Returns roles, goals, decision matrix (Q1-Q4) for classification | First call every turn -- get context before classifying |
| Returns human-readable briefing for a time period or goal | When user asks "what's on my plate?" |
| Persists a classified item to Obsidian (with optional projection) | After classification -- create a todo/event/note |
| Reviews item fate: | For item review, approval decisions |
| Reads/writes soul.md and atomic roles/goals | Initial setup, profile edits |
Decomposed Onboarding Paths
For agents that prefer typed OpenAPI operations over JSON-RPC:
Operation | HTTP Path | Method | Description |
|
| GET | Read soul.md + atomic template + validation status |
|
| POST | Write soul.md markdown (step 1/3) |
|
| POST | Persist atomic roles/goals (step 2/3) |
|
| POST | Set external push policy (step 3/3) |
OpenAPI Discovery
HUD serves a full OpenAPI 3.1 spec at /openapi.json for tool server auto-discovery. Compatible with OWUI, custom tool servers, and any OpenAPI client.
HTTP Route Parity
All MCP methods have direct HTTP path equivalents:
Route | Method | Maps To |
| GET | Service health check |
| POST |
|
| POST |
|
| POST |
|
| POST | All tools (JSON-RPC) |
| GET, POST | Legacy combined onboarding |
| GET |
|
| POST |
|
| POST |
|
| POST |
|
| POST | Sync status check |
| POST | Sync status (compat alias) |
| GET | OpenAPI 3.1 discovery spec |
Onboarding Ritual (v1.4.1)
HUD uses a multi-step onboarding to build the user's personal context (roles, goals, mission) and push policy preferences.
hud.brief(no scope) -- Returns classification context withonboarding_state: incompletehud.onboarding.read-- Returns the current soul.md template markdown and the exactatomic_templateshapeWrite soul.md --
hud.onboarding.write_soulwith filled markdown (Roles Matrix + Goals Matrix tables)Set atomic --
hud.onboarding.set_atomicwith structuredroles,goals_by_role,primary_role_ref,primary_goal_refSet push policy --
hud.onboarding.set_pushwith user'sexternal_push_without_approvalpreferenceVerify --
hud.brief(no scope) confirmsonboarding_state: fully_onboarded
The onboarding uses meta-prompting -- tool responses include mcp_meta.mode that tells the agent what to do next (efficiency, strict_ritual) and reduces tool-calling overhead.
Agent Harness Compatibility
Important note on tool calling patterns
AdventedHUD was designed and tested against Open WebUI's sequential tool-calling model, where the agent calls one tool at a time and the system enforces a strict turn-by-turn flow.
The mcp_meta instruction system -- which tells agents "call this next" -- is optimized for this sequential pattern. Key behaviors to expect:
Agent Harness | Compatibility | Notes |
Open WebUI | Full | Reference platform. Sequential calls, mcp_meta instructions, onboarding ritual -- all tested |
Claude Code / Claude Desktop | Varies | MCP JSON-RPC works. Parallel tool calling may skip mcp_meta sequencing. Onboarding ritual instructions may behave differently |
Custom agent harness | Varies | Direct HTTP to HUD works. If your harness calls tools in parallel or ignores mcp_meta, you may need to orchestrate the onboarding ritual steps yourself |
OpenAI Compatible | Partial | The OpenAPI spec at |
Key callout: The onboarding ritual relies on mcp_meta.next_action to guide the agent through the 6-step sequence. If your agent harness does not read and follow mcp_meta instructions between tool calls, you will need to orchestrate the onboarding steps externally.
AdventedOS Context
AdventedHUD was built as part of AdventedOS -- a personal server infrastructure that bundles:
AdventedOS Proxy -- An HTTP gateway (port 52415) that routes requests between OWUI, HUD, model inference endpoints, and other services. Handles MCP tool discovery, API key injection, and cross-service orchestration.
Open WebUI (OWUI) -- Chat interface for interacting with LLMs. Discovers HUD's tools via the OpenAPI spec and manages conversation state.
Running HUD in the AdventedOS Stack
In the reference deployment, the proxy lives at the monorepo root next to AdventedHUD/:
AdventedOS/
+-- AdventedHUD/ # this repo
+-- proxy/ # AdventedOS proxy (separate service)
+-- data/ # Shared data (OAuth credentials, Obsidian vault, DB)
+-- docker-compose.yml # OWUI container configThe proxy automatically:
Serves HUD's
/openapi.jsonfor OWUI tool discoveryInjects the
X-HUD-Admin-Keyheader on behalf of the userRoutes
/hud/*traffic to the HUD service on port 8200
You do not need AdventedOS to run AdventedHUD. The service is fully standalone -- point any HTTP client or MCP-capable agent directly at port 8200.
Project Structure
AdventedHUD/
+-- main.py # Entry point
+-- hud/
| +-- main.py # Server bootstrap (aiohttp)
| +-- server.py # Route definitions + OpenAPI spec
| +-- mcp.py # JSON-RPC dispatch for all tools
| +-- adapters.py # Google OAuth, Calendar, Tasks projection
| +-- brief_context.py # Decision matrix + context builder
| +-- contracts.py # Shared models, error payloads, constants
| +-- gates.py # Admin auth, user resolution, onboarding gating
| +-- handlers.py # /health, /sync_status
| +-- ingest_project.py # Ingest + approve/reject pipeline
| +-- meta.py # Meta-prompting / efficiency modes
| +-- onboarding.py # Soul read/write with validation
| +-- onboarding_db.py # DB-level onboarding state management
| +-- store.py # SQLite store
| +-- sync.py # Sync utilities
| +-- workers.py # Background workers
+-- tests/
| +-- test_phase1_smoke.py
| +-- test_brief_v141.py
| +-- test_meta.py
| +-- test_onboarding_db.py
| +-- test_store.py
| +-- test_soul_template_gates.py
| +-- test_google_projection_lifecycle.py
+-- docs/
| +-- hud_foundation_spec.md # Foundation specification (authoritative)
| +-- hud_skill.md # Agent MCP contract (for LLM agents)
| +-- soul-template.md # Soul worksheet template
+-- requirements.txt # aiohttp only
+-- README.md # you are hereDocs
Document | Purpose |
Foundation specification. Describes intent, philosophy, atomic data model, decision matrix, projection rules, and onboarding gating. Authoritative design document. | |
Agent MCP contract. The exact instructions an LLM agent follows to interact with HUD. Includes onboarding ritual sequence, classification rules, and meta-prompting behavior. | |
User-facing soul worksheet template. The markdown file users fill with their mission, roles, goals, values, and priorities. |
Tests
# From the repo root
pip install pytest
pytest tests -q
# All tests use monkeypatch + tmp_path -- no external dependencies, no live servicesTest coverage:
test_phase1_smoke.py-- End-to-end routing and basic MCP dispatchtest_brief_v141.py-- Brief context with decision matrixtest_meta.py-- Meta-prompting mode transitionstest_onboarding_db.py-- DB-level onboarding state managementtest_store.py-- SQLite store operationstest_soul_template_gates.py-- Soul template validation gatingtest_google_projection_lifecycle.py-- Google projection: deferred on ingest, dispatched on approve, auto-approve for Pattern B
License
Apache 2.0
Built as part of the AdventedOS personal infrastructure ecosystem.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/av151318/AdventedHUD'
If you have feedback or need assistance with the MCP directory API, please join our Discord server