Docs

How the comb works

Everything here is stated as it is today. Where a feature is designed rather than built, the page says so.

Getting started

  1. Open the comb. Static files, no account, nothing installed. The first load makes one agent, Scout.
  2. Add a key under Settings for Anthropic, OpenAI, Groq or Venice. It is stored in this browser's local storage and sent only to that provider's API.
  3. Make an agent: a name, a provider and model, a system prompt. Set it active and start in Chat, or open the Terminal panel from the top bar.

Agents

An agent is a record on this device: name, provider, model, prompt. The active agent answers the chat, the terminal's free text, the ask command, the code explainer and any task that names it. Agents are exported and imported as part of the comb's JSON.

Providers and models

ProviderEndpoint the browser callsModels offered
Anthropicapi.anthropic.com/v1/messages, with the direct-browser-access headerclaude-fable-5-1, claude-opus-5, claude-sonnet-5, claude-haiku-4-5
OpenAIapi.openai.com/v1/chat/completionsgpt-5, gpt-5-mini, gpt-4.1, gpt-4.1-mini; the request uses max_completion_tokens, and gpt-5 models ignore the temperature setting because OpenAI allows only their default
Groqapi.groq.com/openai/v1/chat/completionsllama-3.3-70b, llama-3.1-8b, deepseek-r1-distill-70b, qwen-2.5-32b
Veniceapi.venice.ai/api/v1/chat/completionsllama-3.3-70b, llama-3.1-405b, deepseek-r1-671b, qwen-2.5-vl

The call carries your key in the request header, from your browser to the provider. HEXCOMB has no server in the path and never sees it. All four providers answered a browser preflight from this site's origin with permission on 10 September 2026, so browser calls work with each of them today. If a provider ever withdraws that, the chat shows the refusal as a system line, and the relay, which calls from a server, still works.

Code

JavaScript runs on this device, inside a Web Worker with no DOM, no network and a five second limit. console.log and the function's return value are the output. Anything else (Python, Go, Rust, Ruby, Bash) is sent to the active agent, which reports what the program would print. That is an explanation, not an execution, and the page labels it so.

Terminal

The terminal is a panel at the bottom of the comb: the Terminal button in the top bar opens and closes it, the − and + buttons and Max set its height (or drag its top edge), the size is remembered on this device, and it keeps its history while you move between cells. /app/terminal opens the comb with it already open. The context panel on the right, where a cell has one, shows what goes in with a message, the pages you have read, or a task's recent runs.

help              the list below
price <sym>       a live Chainlink print on Robinhood Chain
balance · connect · disconnect · block   the wallet, read only, and the chain
signin <email> · code <n> · signout   a wallet through Privy, read only
whoami            who you are here, and which agent is active
agents            every agent on this device
use <name>        make one active
tasks             scheduled tasks and their run counts
keys              which providers have a key (never the key itself)
ls                what is stored on this device
run <js>          run JavaScript in the worker
ask <text>        hand text to the active agent
open <url>        read a page as text and keep it in notes
clear             clear the screen

Anything not on that list goes to the active agent as a message.

Tasks

A task is a goal, an agent and an interval: once, or every 5, 15, 30 minutes, hour or day. A scheduler ticks every twenty seconds while the comb is open and runs what is due: the agent gets the goal and its last three steps, does the next step, and the output is logged on the task. A reply that begins with DONE switches the task off. Close the tab and this scheduler stops. A task that has to outlive the tab goes on the relay, below, and that is opt in.

The relay live

A small service that runs a task while your browser is closed. Choose "On the relay" when you schedule a task and the goal, the agent's brief and model, the interval and that provider's key are sent to it. What the relay does with the key, in plain words:

Tasks that run in the tab can notify you when they finish while the tab is in the background; switch that on in Settings and the browser asks for permission once.

A free agent on Telegram live

The other way to run an agent: not in your browser with your key, but on the relay with ours, talking in Telegram. Deploy one in four steps: pick a template (Scout, Researcher, Community, Writer), give it a name and a brief, paste a bot token from BotFather, deploy. What happens then, in plain words:

Installing the comb

The site is an installable web app. On a phone, use the browser's Add to Home Screen; on desktop Chrome or Edge, the install icon in the address bar. It opens on the comb, full screen, and the shell keeps working offline; the model calls, the chain and the relay still need a network, as they must.

If you would rather the key never left this device, keep tasks in the tab. Both kinds are listed on the Tasks page, separately.

Sharing an agent

Share on the Agents page copies a link that carries the agent's name, provider, model and brief in the address itself, and never a key. Anyone who opens the link is asked whether to add that agent to their comb. Post the link anywhere; there is no marketplace server because the link is the listing.

Chat

Browser

One box. Words search the web; a link reads a page. Both go through a public reader (r.jina.ai) that returns pages as text, because a browser cannot read most third-party pages directly. Search reads DuckDuckGo's lightweight results page the same way and lists the links; Read on a result, or open <n> in the terminal, reads that page. Read pages are kept in your notes, up to twelve, and Summarise sends the latest to the active agent. Pages behind logins, and sites that block the reader, will not open. No key is involved.

On chain

Read only, and stated as such on every surface. Prices come as one snapshot: a small service of ours reads every feed from the chain every 30 seconds and serves the same JSON to every visitor, so a page costs one request instead of a burst. If that snapshot is missing or older than two minutes, the browser reads the public RPC of Robinhood Chain directly, which allows browser origins. Balances and the wallet always go straight to the RPC. No key is involved on either path.

Storage and privacy

Private pay-per-use coming soon

The shielded payment flow on Robinhood Chain is written down on the private pay page. Nothing on this site takes money today, no contract is deployed for it, and there is no token. A token launches only if the free tier outgrows what the relay can carry, and then only as the key to higher limits; the roadmap states the condition.

Robinhood Chain

ChainRobinhood Chain, id 4663, an Arbitrum Orbit L2
DollarUSDG, 6 decimals, 0x5fc5360d0400a0fd4f2af552add042d716f1d168
Public RPChttps://rpc.mainnet.chain.robinhood.com
Explorerrobinhoodchain.blockscout.com