Builder Guide

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.

yamlcopy
# 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.md

Set 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.

bashcopy
export H_KEY="hk_live_..."
curl -H "X-H-Api-Key: $H_KEY" https://jane.computer/api/v1/journal?status=all

5 · 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).

markdowncopy
---
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.

tscopy
// 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.

tscopy
// 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.

markdowncopy
# 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.

bashcopy
curl -fsSL https://jane.computer/install.sh | sh

Works 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.

htmlcopy
<script src="https://jane.computer/embed.js" data-card="now"></script>
Next
Wire it into your other agents

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.

last updated · Jun 15, 2026