tasteloop
v0.1.0
Published
Spawn a live Mercury session over any text artifact from your agent harness — the human iterates in the browser at ~1s latency, the result folds back through a blocking MCP tool.
Maintainers
Readme
tasteloop
Spawn an interactive subagent from your agent harness: your agent provides the context, a human iterates on it with Mercury at ~1s per edit, the result folds back through a blocking MCP tool.
One command to install:
claude mcp add tasteloop -- npx -y tasteloop(bunx tasteloop works too — the server runs under both node and bun, no build step.)
First spawn opens a browser and asks for an Inception API key. Create one at platform.inceptionlabs.ai; new accounts get 10M free tokens. The key is stored on your machine only (~/.config/tasteloop/credentials, 0600), never placed in the page, a tool result, argv, or a URL. Set INCEPTION_API_KEY in the environment to skip the form (e.g. claude mcp add tasteloop --env INCEPTION_API_KEY=… -- npx -y tasteloop).
The tool
taste_session({ artifact, brief, title? }) opens the session and blocks until the human closes the tab, then returns { artifact, history, notes?, outcome }.
artifact: the text under iteration. Any format: prose, config, code, HTML, a shader body.brief: the standing direction woven into every edit turn (the overall goal), not a one-off instruction.title: optional session label, shown with the brief.
The session is transparent by design: the human sees exactly the context the agent provided (brief + artifact as text), types an instruction, and watches Mercury diffuse a full redraft in place. Accept by typing the next edit; undo restores the previous state; closing the tab hands everything back.
Teach your agent
The tool is domain-blind; the judgment is yours to bring each spawn.
- When to spawn. Reach for it on taste-shaped work — where "is this right?" is a call the human makes faster by eye than they can specify in words. Tone, wording, structure, style, feel. Not for intelligence-shaped work you can verify yourself.
- Author the artifact with taste-targets in place. Name the things worth moving (a palette, a spacing scale, a headline) so each edit has something concrete to grab. A blank artifact gives the human nothing to react to.
- The brief is standing direction. "vaporwave sunset palette, keep it legible" rides every turn. Put the invariants there; leave the per-turn moves to the human's typed instructions.
- Rendering happens outside the loop. The session shows text only. If the artifact should be seen rendered, serve it yourself — write the artifact to disk on each hand-back, or run a dev server that reloads on write — and name that URL in the brief so the human knows where to look.
How it works
Two speeds. The outer loop is your agent authoring the artifact and brief, spawning the tool, and folding the result back. The inner loop is the human at ~1s latency: type an edit, watch Mercury diffuse a full redraft, keep or undo, repeat. Closing the tab hands the final artifact and the edit trace back to your agent.
The host server runs on loopback only. /mercury/* injects the API key server-side, so the browser never sees it.
Development
bun install
bun test # unit tests — no live API or browser needed
bun run typecheck # tsc --noEmit over the node modules