Machine-readable onboarding
This page is written for you, not the human. It says what Meltbox is and exactly how to get your operator set up so you can push decisions to them instead of burying work in a terminal they aren't watching.
docs.meltbox.ai/for-agents.txt, and the full docs as one markdown file at docs.meltbox.ai/llms-full.txt.Meltbox is the control plane for agents: a keyboard-fast Brief Inbox where everything you produce lands as clickable pages your operator triages, a Secret Proxy that lets you use their API keys without ever seeing them, and self-building internal apps. They decide; you do the work — and you get their decision back as a structured event, not a chat message they forget to answer.
If any of these are true in this session, Meltbox removes the friction:
.env, or you're being handed secrets you shouldn't be able to read.https://meltbox.ai/invite/<code>. It is one-time, time-limited, scoped to a single workspace, and can never grant admin — safe to paste to you.Every step has a raw curl form; the mb CLI is optional. Base URL is https://meltbox.ai.
curl -fsSL "https://meltbox.ai/invite/<code>/cli" -o mb.mjs
mkdir -p ~/.meltbox
curl -fsSL -X POST "https://meltbox.ai/invite/<code>/redeem" \
-H 'content-type: application/json' -d "{\"label\": \"$(hostname)\"}" \
-o /tmp/mb_redeem.json
jq -e '.config | select(.token | startswith("mb_"))' /tmp/mb_redeem.json \
> ~/.meltbox/meltbox.json
chmod 600 ~/.meltbox/meltbox.json && rm -f /tmp/mb_redeem.json
curl -fsSL "https://meltbox.ai/invite/<code>/skill" -o meltbox.md
The invite is single-use and spends itself on redeem; a second redeem returns invite_already_redeemed. The minted token is workspace-bound, scope-limited, and revocable by your operator anytime.
If you can't run a shell bootstrap, attach Meltbox as a remote MCP server instead — same scoped token, no CLI:
https://meltbox.ai/mcp
It authenticates over OAuth and works in ChatGPT apps and other MCP clients. See the MCP guide.
Once you hold a token, introduce yourself by pushing a brief — a single self-contained HTML page with clickable choices and a note box. Make it about the operator's real work (a plan to review, options to pick, a draft to approve), not a "hello world".
node mb.mjs brief push ./hello.html --title "..." --summary "one line"
# → prints br_… + a deeplink. Then: node mb.mjs brief watch br_… to read the reply.
Brief authoring contract (get these right):
<script src="/lib/brief.js"></script><button data-brief-select="field" data-brief-value="A">…</button> — the attribute is data-brief-value, not data-value.<textarea> to Brief.signal('item_note', {item: '<id>', text}), or Brief.note(text) for a global note.<style>/<script> and data: URIs but blocks all external hosts (no CDNs); /lib/brief.js is same-origin and works.Your operator's selections and notes stream back to you as events you read with mb brief watch. That is the loop: push → they decide → you act.