h.computer / hstack

hstack docs

hstack is the portable skill + MCP bundle for h.computer. One curl drops a fully-wired folder into your CLI agent (Claude Code, Codex, Cursor, Aider, Continue, Pi, Hermes, Zed). Then your agent can read, write, and reason about H over REST or MCP.

get started

Quickstart

Three steps from zero to your CLI agent talking to H.

1. Install the bundle

curl -fsSL https://h.computer/install.sh | sh
sh

Drops a hstack/ folder with AGENTS.md, skills, and MCP configs into CWD. Override location with HSTACK_DIR=~/.hstack.

2. Sign in and grab a key

Open h.computer/auth to sign in (email or SMS, no password), then h.computer/admin to reveal an hk_… key.

export H_API_KEY=hk_xxxxxxxxxxxxxxxx
sh

3. Make your first call

# Public read (no key needed)
curl -s https://h.computer/api/v1/now | jq .

# Authenticated write
curl -X POST https://h.computer/api/v1/status \
  -H "X-H-Api-Key: $H_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"hello from my CLI agent","kind":"status"}'
sh
get started

One-curl install

The installer is a single shell script. It's idempotent — safe to re-run to refresh skills and MCP configs.

# default: drops ./hstack/ into CWD
curl -fsSL https://h.computer/install.sh | sh

# custom location
HSTACK_DIR=~/.hstack curl -fsSL https://h.computer/install.sh | sh
sh

After install, your folder looks like:

hstack/
├── AGENTS.md            # read first by Claude Code / Codex / Cursor
├── SETUP.md             # human-readable 3-step quickstart
├── openapi/openapi.json # full OpenAPI spec (snapshot)
├── mcp/
│   ├── h.computer.json    # raw mcp.json wire format
│   ├── claude-desktop.json
│   └── cursor.json
└── skills/
    ├── post-status.md
    ├── queue-blog-idea.md
    ├── append-journal.md
    ├── recompile-journal.md
    └── search.md
text
get started

Authentication

Two tiers: public reads need nothing, owner writes need an hk_ API key in the X-H-Api-Key header.

X-H-Api-Key: hk_xxxxxxxxxxxxxxxx
# OR
Authorization: Bearer hk_xxxxxxxxxxxxxxxx
http

Generate, rotate, and revoke keys at /admin. Each request is logged with route, status, latency, and per-key totals.

rest api

Read endpoints

All GET endpoints are public. Base URL: https://h.computer/api/v1.

GET /api/v1/now      # current focus + status
GET /api/v1/today    # today's journal entry (falls back to latest)
GET /api/v1/feed     # living feed cards
GET /api/v1/blog     # latest posts  (?tag=weekly|monthly to filter)
GET /api/v1/digests  # weekly + monthly rollups, split by kind
GET /api/v1/papers   # research-paper ledger
GET /api/v1/journal  # daily logs  (?date=YYYY-MM-DD for one entry)
GET /api/v1/stats    # snapshot across all surfaces
GET /api/v1/search   # unified search  (?q=...&kinds=blog,journal,paper)
http
rest api

Write endpoints

All writes require an hk_ key. Every call is rate-aware and logged.

POST /status — push to the living feed

curl -X POST https://h.computer/api/v1/status \
  -H "X-H-Api-Key: $H_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"shipped hstack docs","kind":"status"}'
sh

POST /post-idea — queue a blog idea

curl -X POST https://h.computer/api/v1/post-idea \
  -H "X-H-Api-Key: $H_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"idea":"why agents need taste, not just tools","tags":["agents","taste"]}'
sh

POST /log — append to today's journal

Non-destructive — appends a heading + block to today's entry. Creates the day if missing.

curl -X POST https://h.computer/api/v1/log \
  -H "X-H-Api-Key: $H_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"heading":"midday","text":"shipped the docs revamp","source":"cli"}'
sh

PATCH /journal — rewrite a day

Replaces fields by default. Pass "replace_body": false to append instead. Upserts when no entry exists for that date.

curl -X PATCH https://h.computer/api/v1/journal \
  -H "X-H-Api-Key: $H_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"2026-06-15","title":"new title","body":"# new body\n...","status":"published"}'
sh

DELETE /journal — remove a day

curl -X DELETE -H "X-H-Api-Key: $H_API_KEY" \
  "https://h.computer/api/v1/journal?date=2026-06-15"
sh

POST /journal/recompile — re-run the AI compiler

Pulls fresh data from connected sources, then rewrites title + summary + body in newsletter shape with [n] citations.

curl -X POST https://h.computer/api/v1/journal/recompile \
  -H "X-H-Api-Key: $H_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"2026-06-15","force":true}'
sh
rest api

OpenAPI spec

The full spec is served at /api/v1/openapi.json. Generate a typed client with any OpenAPI codegen.

# typescript types
npx openapi-typescript https://h.computer/api/v1/openapi.json -o h.d.ts

# python client
openapi-python-client generate --url https://h.computer/api/v1/openapi.json
sh
mcp

MCP server

Streamable HTTP MCP endpoint at https://h.computer/api/public/mcp. Authenticate with the same X-H-Api-Key header — owner-scoped tools require any valid hk_ key, public tools require nothing.

{
  "mcpServers": {
    "h.computer": {
      "url": "https://h.computer/api/public/mcp",
      "headers": {
        "X-H-Api-Key": "${H_API_KEY}",
        "Accept": "application/json, text/event-stream"
      }
    }
  }
}
json
mcp

Client configs

The installer writes ready-to-paste configs into hstack/mcp/. Highlights:

Claude Desktop / Claude Code

{
  "mcpServers": {
    "h.computer": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://h.computer/api/public/mcp",
               "--header", "X-H-Api-Key:${H_API_KEY}"],
      "env": { "H_API_KEY": "hk_xxx" }
    }
  }
}
json

Cursor / Zed / native HTTP MCP clients

{
  "mcpServers": {
    "h.computer": {
      "url": "https://h.computer/api/public/mcp",
      "headers": { "X-H-Api-Key": "${H_API_KEY}" }
    }
  }
}
json
mcp

Tool reference

  • push_status — append to feed [key]
  • queue_blog_idea — queue idea [key]
  • append_journal — add to a day [key]
  • update_journal — rewrite a day [key]
  • delete_journal — drop a day [key]
  • recompile_journal — re-run AI compiler [key]
  • list_journal_drafts — filter by status [key]
  • folder_write — write to Folder.md [key]
  • get_now — current focus + feed
  • get_feed — last N items by kind
  • get_blog — published posts (optional tag)
  • get_papers — research ledger
  • get_journal — index or one day
  • get_stats — aggregate snapshot
  • get_project — lookup by name
  • search — full-text across surfaces
  • search_youmd — search inside you.md
  • folder_list / folder_read / folder_search
  • get_fitness_summary
  • get_recent_activities / get_best_efforts
skills

Skill bundle

Each skill is a markdown file under hstack/skills/. Load them as Claude Skills, Cursor rules, or just cat them into a system prompt.

---
name: post-status
description: Push a status update to h.computer's living feed.
auth: hk_ key required
---
POST https://h.computer/api/v1/status

curl -X POST https://h.computer/api/v1/status \
  -H "X-H-Api-Key: $H_API_KEY" -H "Content-Type: application/json" \
  -d '{"text":"shipped X","kind":"status"}'
md
skills

AGENTS.md

The installer writes a top-level AGENTS.md with the 3-step quickstart and a map of every endpoint. Claude Code, Codex, Cursor, Aider, and OpenCode all pick it up automatically. Point any other agent at this file and it learns the surface.

embeds

Today card

Drop today's journal entry on any site:

<div id="h-today" data-h-theme="auto"></div>
<script src="https://h.computer/api/v1/today.js" async></script>
html
live preview
embeds

Now pill

Inline status pill for footers, bios, README badges:

<span id="h-now"></span>
<script src="https://h.computer/api/v1/now.js" async></script>
html
live preview
embeds

Activity grid

A weekly journal heatmap (set data-h-weeks 4–53):

<div id="h-grid" data-h-weeks="16"></div>
<script src="https://h.computer/api/v1/grid.js" async></script>
html
live preview
embeds

Year in review

Compact monthly bar chart + stats card:

<div id="h-year" data-h-theme="auto"></div>
<script src="https://h.computer/api/v1/year.js" async></script>
html
live preview
reference

Rate limits

No hard rate limit yet — be a good citizen. Burst abuse gets the key revoked. Per-key request counts and recent-activity tails are visible to the owner at /admin.

reference

Errors

All REST endpoints return { "error": "...", "details"?: "..." } with an appropriate HTTP status. MCP tools return { isError: true, content: [{ type: "text", text: "..." }] }.

401 — missing or invalid hk_ key
403 — key doesn't have permission for this surface
404 — no entry / record for that date or slug
422 — body failed Zod validation (see "details")
429 — rate-limited (rare; per-key cooldown)
5xx — upstream timeout or internal error
http
reference

Why hstack

Most agents are stateless tools. h.computer is a living interface to a specific person. hstack lets any other agent borrow that interface — read what's on the mind, write into the feed, queue ideas, recompile the day — over the exact same surface the site itself uses. No second-class API.

The protocol is portable. The reference implementation is single-tenant today; multi-tenant {you}.computer instances are on the waitlist at /auth.

last updated · Jul 7, 2026