Build your own .computer
This is the end-to-end playbook for spinning up {you}.computer: a personal, always-on agentic site with its own context, its own connectors, and its own installable API + MCP that any other agent can wire into.
h.computer is the hosted platform. hstack is the open protocol your computer ships. Build once, expose forever.
1 · Claim your subdomain
Pick a handle. We'll provision {handle}.computer with a default theme, an empty journal, and your first hk_ key. You can connect a custom domain later.
2 · Sync your you.md
Your computer pulls identity from a single you.md URL on a 6-hour TTL. Bio, project list, agent directives, custom files — all flow through. Edit you.md, your computer updates with no redeploy.
# you.md
name: Jane Doe
handle: jane
bio: "Indie hacker building tools for ocean researchers."
projects:
- name: tidal
url: https://tidal.example
agent_directives:
- "Sound like me, not like ChatGPT."
- "Never speculate about clients."
custom_files:
- path: writing-voice.md
- path: stack.mdSet the URL in Settings → Context. Force a re-sync any time from the same panel.
3 · Wire your connectors
Connectors are the bridges to the rest of your stack. The platform ships first-party connectors for Gmail, Google Calendar, GitHub, Slack, Notion, Stripe, Firecrawl, marine/meteor weather + surf, hubify, you.md, folder.md, bamf.ai, and more. Each connector becomes a server-side capability your skills and tools can use.
Manage them at /connections. Cross-platform connectors (h.computer, bamf.ai, hubify.com, you.md, folder.md) sit above third-party ones because they're free + instant.
4 · Generate your first API key
Public reads (now, feed, blog, papers, journal index) don't need a key. Writes and protected reads do. Generate hk_ keys at /admin/keys. Keys are owner-scoped — there is no admin tier on the wire.
export H_KEY="hk_live_..."
curl -H "X-H-Api-Key: $H_KEY" https://jane.computer/api/v1/journal?status=all5 · Author your first skill
A skill is a markdown file with YAML frontmatter that teaches a visiting agent how to do something on your computer. Drop them in .agents/skills/ in your computer repo (or paste them into the Skills editor in the dashboard).
---
name: ship-blog-post
description: Publish a blog post from a draft markdown file.
auth: owner
---
# Steps
1. Read the draft markdown.
2. POST to /api/v1/post-idea with { title, body, source: "agent" }.
3. Confirm the post appeared on /blog within 60s.Skills are shipped via the one-curl installer so any visiting CLI agent picks them up automatically.
6 · Expose a tool over MCP
Skills tell agents how; tools are what they call. Define an MCP tool with a name, tier (public or owner), input schema, and handler.
// src/lib/mcp/tools/queue-newsletter.ts
import { defineTool } from "mcp-tanstack-start";
import { z } from "zod";
export const queueNewsletter = defineTool({
name: "queue_newsletter",
description: "Queue a newsletter draft for the next send.",
tier: "owner",
parameters: z.object({
subject: z.string().min(3).max(120),
body: z.string().min(20),
}),
execute: async ({ subject, body }, { ownerId }) => {
await db.from("newsletter_queue").insert({ owner_id: ownerId, subject, body });
return { queued: true };
},
});Register it in src/lib/mcp/tools/index.ts and it appears at /api/public/mcp immediately.
7 · Add a custom REST endpoint
Any file under src/routes/api/v1/ becomes part of your computer's surface. Gate writes with requireHstackKey.
// src/routes/api/v1/surf.ts
import { createFileRoute } from "@tanstack/react-router";
import { requireHstackKey } from "@/lib/hstack-auth.server";
export const Route = createFileRoute("/api/v1/surf")({
server: {
handlers: {
GET: async () => {
const data = await getSurfReport(); // your code
return Response.json(data);
},
POST: async ({ request }) => {
await requireHstackKey(request);
const body = await request.json();
await logSurfSession(body);
return Response.json({ ok: true });
},
},
},
});Mirror new endpoints in src/routes/api/v1/openapi.json.ts so agents discover them automatically.
8 · Write your AGENTS.md
AGENTS.md is the contract every agent reads first. Describe your computer, list your skills, point to your OpenAPI + MCP URLs, document your conventions.
# AGENTS.md — jane.computer
You are working with Jane's personal computer.
- REST: https://jane.computer/api/v1
- MCP: https://jane.computer/api/public/mcp
- OpenAPI: https://jane.computer/api/v1/openapi.json
- Auth: X-H-Api-Key: hk_...
Rules:
- Append to journal via append_journal — never rewrite.
- Posts default to status: draft.
- Never call connectors directly; go through tools.9 · Ship the install one-liner
Every computer gets a generated install.sh that drops AGENTS.md, MCP configs, and your published skills into any agent's CWD.
curl -fsSL https://jane.computer/install.sh | shWorks with Claude Code, Codex, Cursor, Pi, Hermes, openclaw, and any other AGENTS.md-aware CLI.
10 · Curate your public surface
Public reads expose /now, /feed, /blog, /papers, and /journal (published only). Toggle visibility per surface in Settings → Privacy.
11 · Drop embeds anywhere
Your computer ships a script-tag embed library — the now pill, today card, activity grid, year-in-review. Drop them on any other site to keep your surface coherent.
<script src="https://jane.computer/embed.js" data-card="now"></script>Head to hstack reference for the full REST + MCP surface, error shape, rate limits, and per-tool schemas. Every endpoint has a curl snippet and an MCP tool name.