Skip to main content

Your AI Agent Now Controls Any Website.
With a Full Audit Trail.

Drop one line intoCLAUDE.md, AGENTS.md, or .cursorrules— and your AI gains real browser automation: Gmail, Slack, LinkedIn, GitHub, and any website. Every click signed, sealed, and verifiable. MCP server live. Ships in 30 seconds.

✅ MCP Live 🔒 FDA Part 11 Architected ⚡ 21 Agent Formats 💰 $0.001 / task replay 🔎 $0.00 / QA run

Add Solace to Any Project in One Command

curl -fsSL https://solaceagi.com/agents/claude.md >> CLAUDE.md

Adds Solace browser automation instructions to your Claude Code project. Works immediately — no signup, no SDK.

Step 0: Download & Install Solace Browser

Solace Browser is a desktop app that runs on your machine. Download it first, then your AI agent can control it via localhost:8888.

1

Download Solace Browser

Visit solaceagi.com/download and download the version for your operating system.

# Linux (one-line install):
curl -sf https://storage.googleapis.com/solace-downloads/install.sh | bash

# macOS / Windows: download the installer from
# https://www.solaceagi.com/download

The download includes Solace Hub (desktop app) + Solace Runtime (local API on port 8888) + Solace Browser (Chromium fork with Yinyang sidebar).

2

Launch Solace Hub

# Start the Hub — it launches everything automatically
~/.solace/bin/solace-hub

The Hub sits in your system tray. It starts the local API server on port 8888 and opens the browser when ready.

3

Verify it's running

curl http://localhost:8888/api/v1/system/status
→ {"app_count": 22, "cloud_connected": false, "evidence_count": 0, "uptime_seconds": 5}

If you see JSON, your agent is ready to use Solace. No account needed. Free forever for local use.

Every Major AI Coding Agent, Supported

Download the right format for your AI assistant. Each file tells the AI exactly how to use Solace — navigate, click, fill, screenshot, and capture evidence. 21 formats supported out of the box.

Claude Code

Drop into yourCLAUDE.md. Claude Code will use Solace Browser for any web automation task automatically.

Download CLAUDE.md snippet
💬

OpenAI Codex

Drop into yourAGENTS.md. OpenAI Codex and ChatGPT agents read this file to understand available tools and capabilities.

Download AGENTS.md snippet

Cursor

Drop into your.cursorrules. Cursor will reach for Solace whenever you ask it to interact with a website.

Download .cursorrules
🏄

Windsurf

Drop into your.windsurfrules. Windsurf (Codeium) picks up Solace capabilities exactly like Cursor — same format, zero friction.

Download .windsurfrules

GitHub Copilot

Drop into.github/copilot-instructions.md. Copilot will suggest Solace API calls for browser tasks.

Download copilot instructions

Aider

Pass as a system prompt with--system-prompt solace-aider.md. Aider will route all web interactions through Solace Browser automatically.

Download aider system prompt

Continue.dev

Add to your.continue/config.jsoncontext providers. Continue will surface Solace browser automation as a native tool in VS Code and JetBrains.

Download Continue config
📞

Cline

Drop into your.clinerules/directory. Cline reads project rules at session start — Solace capabilities load automatically for every conversation.

Download .clinerules snippet
🦕

RooCode

Place in.roocode/rules/. RooCode (formerly Roo-Cline) inherits Solace browser capabilities alongside its agentic coding modes.

Download RooCode rules
🔭

Google Gemini CLI

Add toGEMINI.mdin your project root. Google's open-source agent CLI picks up Solace instructions the same way it reads Claude'sCLAUDE.md.

Download GEMINI.md snippet
🚀

Google Jules

Jules readsAGENTS.mdbefore acting on GitHub issues. Solace instructions appear automatically when Jules handles any web-related task in your repo.

Download AGENTS.md for Jules

Zed Editor

Place rules in.rulesat your project root. Zed's AI panel reads these natively — Solace becomes available to the Zed AI assistant instantly.

Download Zed .rules snippet
🔹

Amazon Q Developer

Add to.amazonq/rules/solace.md. Amazon Q Developer reads markdown rule files from this directory for every coding session in your project.

Download Amazon Q rules
🎯

JetBrains AI

Add to.idea/ai-guidelines.md. JetBrains AI Assistant reads this file across IntelliJ, PyCharm, WebStorm, and all JetBrains IDEs.

Download JetBrains guidelines
🔎

Sourcegraph Cody

Place context in.cody/context/solace.md. Cody includes this file in its retrieval context — Solace instructions appear in every Cody conversation.

Download Cody context
📄

Tabnine

Configure via.tabnine/personalization. Tabnine's personalization file lets you teach it your team's toolchain — including Solace browser automation.

Download Tabnine config
🆕

Replit AI

Add to your.replitfile's[ai]section. Replit AI reads project context from here — Solace becomes available in every Replit workspace.

Download .replit snippet
🤖

Devin

Place in.devin/playbooks/. Devin reads project playbooks before starting long-horizon tasks — Solace browser tools are available for any web workflow.

Download Devin playbook
🏭

Factory Droid

Factory readsAGENTS.md and .factory/configs. Droid agents inherit Solace capabilities when automating software development workflows.

Download Factory config
🔰

Kilo Code

Add to.kilocode/rules/. Kilo Code follows the same project rules pattern as Cline — Solace instructions load for every agentic coding session.

Download Kilo Code rules

llms.txt

Jeremy Howard standard for LLM-readable site descriptions. Drop in your project root for any LLM to understand Solace.

Download llms.txt

What’s Inside the CLAUDE.md Snippet

Every integration file teaches your AI agent exactly how to use Solace. Here’s the Claude Code snippet — drop it into your project and your agent immediately understands all 14 Solace APIs, the MCP server, e-signing, and best practices.

# Solace Browser Integration # Source: solaceagi.com/agents/claude.md ## What Solace Is Chromium fork with a native Yinyang sidebar. Solace Hub starts first and exposes Yinyang Server on port 8888. Sessions persist. Evidence is hash-chained. MCP: 8 tools live now. ## Quick Start curl http://localhost:8888/api/status # → {"running": true, "status": "ready"} ## Core API (all POST, JSON body) navigate {"url": "...", "wait_for": "networkidle"} click {"selector": "..."} fill {"selector": "...", "value": "..."} screenshot {"full_page": true} → {"filepath": "artifacts/..."} evaluate {"expression": "document.title"} aria-snapshot GET → accessibility tree JSON ## YinYang Notify (alert user, non-blocking) POST /api/yinyang/notify {"type":"success","message":"...","priority":"low"} ## E-Sign (FDA Part 11 §11.100) POST /api/v1/esign/token {"user_id":"...","run_id":"...","meaning":"reviewed_and_approved"} ## MCP (add to .claude/settings.json) {"mcpServers":{"solace":{"command":"python3","args":["yinyang_mcp_server.py"]}}} ## Best Practices 1. Screenshot before click (evidence of what agent saw) 2. ARIA snapshot for structure, screenshot for visual 3. Minimal OAuth3 scopes + budget_usd on every token 4. Notify user via YinYang (never console.log spam) 5. E-sign every user-approved action
# Solace Browser Integration
# Source: solaceagi.com/agents/claude.md

## What Solace Is
Chromium fork with a native Yinyang sidebar. Solace Hub starts first and exposes Yinyang Server on port 8888.
Sessions persist. Evidence is hash-chained. MCP: 8 tools live now.

## Quick Start
curl http://localhost:8888/api/status
# → {"running": true, "status": "ready"}

## Core API (all POST, JSON body)
navigate    {"url": "...", "wait_for": "networkidle"}
click       {"selector": "..."}
fill        {"selector": "...", "value": "..."}
screenshot  {"full_page": true}  → {"filepath": "artifacts/..."}
evaluate    {"expression": "document.title"}
aria-snapshot GET  → accessibility tree JSON

## YinYang Notify (alert user, non-blocking)
POST /api/yinyang/notify {"type":"success","message":"...","priority":"low"}

## E-Sign (FDA Part 11 §11.100)
POST /api/v1/esign/token {"user_id":"...","run_id":"...","meaning":"reviewed_and_approved"}

## MCP (add to .claude/settings.json)
{"mcpServers":{"solace":{"command":"python3","args":["yinyang_mcp_server.py"]}}}

## Best Practices
1. Screenshot before click (evidence of what agent saw)
2. ARIA snapshot for structure, screenshot for visual
3. Minimal OAuth3 scopes + budget_usd on every token
4. Notify user via YinYang (never console.log spam)
5. E-sign every user-approved action

Full file:download CLAUDE.md snippet • View agents.json (machine-readable)

Hello World in 3 API Calls

The complete Solace API is learnable in three commands. Everything else is a variation.

1

Navigate to any page

curl -X POST http://localhost:8888/api/navigate -H "Content-Type: application/json" -d '{"url": "https://example.com"}'
→ {"success": true, "status": 200, "url": "https://example.com"}
2

Screenshot what happened

curl -X POST http://localhost:8888/api/screenshot -H "Content-Type: application/json" -d '{"full_page": true}'
→ {"success": true, "filename": "screenshot-20260302-120000.png", "filepath": "artifacts/screenshot-20260302-120000.png", "size": 17115}
3

Evidence captured automatically

ls ~/.solace/audit/
→ plan.json  env_snapshot.json  run_log.txt  behavior_hash.txt — SHA-256 hash chain sealed. Every action tamper-evident.

Full API Reference

All local browser-control endpoints run on http://localhost:8888. Treat /agents.json as the canonical machine-readable contract for your agent runtime.

Endpoint Method What It Does OAuth3 Scope
/api/navigatePOSTLoad a URL in the browserbrowser.navigate
/api/clickPOSTClick any CSS selectorbrowser.click
/api/fillPOSTFill a form fieldbrowser.fill
/api/screenshotPOSTCapture current page as PNG (saved to artifacts/)browser.screenshot
/api/evaluatePOSTRun JavaScript (expressionkey), return resultbrowser.evaluate
/api/snapshotPOSTCapture raw HTML of pagebrowser.snapshot
/api/aria-snapshotGETARIA accessibility tree (structured JSON)browser.snapshot
/api/dom-snapshotGETDOM snapshot tree for deterministic structure checksbrowser.snapshot
/api/page-snapshotGETCombined page snapshot (ARIA + DOM + metadata)browser.snapshot
/api/healthGETLiveness probe for runtime readiness(none)
/api/statusGETBrowser health, readiness, current URL, session(none)
/api/part11/statusGETPart 11 capture state, session id, bytes written, last error(none)
/api/part11/configPOSTConfigure Part 11 capture mode and audit directorypart11.configure
/agents.jsonGETMachine-readable capabilities manifest(none)

MCP Server — Live Now

Model Context Protocol lets Claude Code and other MCP-compatible tools connect to Solace as a native tool — no curl commands needed. Eight tools available today: detect_apps, list_apps, create_schedule, list_schedules, delete_schedule, record_evidence, list_evidence, get_hub_status.

✅ Local MCP — Available Now

# Step 1: start the MCP server (stdio JSON-RPC 2.0)
python3 ~/projects/solace-browser/yinyang_mcp_server.py

# Step 2: add to Claude Code .claude/settings.json:
{
  "mcpServers": {
    "solace": {
      "command": "python3",
      "args": ["/path/to/solace-browser/yinyang_mcp_server.py"]
    }
  }
}

Once configured, Claude Code calls detect_apps, create_schedule, record_evidence, and 5 more Hub-native MCP tools on localhost:8888. Every call is OAuth3-scoped and SHA-256 evidenced.

☁ Remote MCP — Cloud (Coming Soon)

# Remote MCP is still coming soon:
{
  "mcpServers": {
    "solace": {
      "url": "mcp.solaceagi.com",
      "apiKey": "sol_..."
    }
  }
}

# Paid users can already launch a cloud twin today:
POST https://solaceagi.com/api/v1/browser/twin/launch
Authorization: Bearer sw_sk_...
{
  "scope": "twin:browser",
  "ttl_minutes": 15,
  "app_id": "solace-yinyang",
  "url": "https://solaceagi.com/dashboard"
}

Connect from any machine. Browser workers run in the cloud. OAuth3 governs every tool call. Every action hash-chained and evidence-captured to your vault. Dragon Warrior tier required.

8 MCP Tools Available Today

MCP ToolMaps to APIWhat It Does
detect_appsPOST /detectDetect which Solace apps are available for a URL.
list_appsGET /creditsList the apps currently loaded by the Hub.
create_schedulePOST /api/v1/browser/schedulesCreate a cron-backed schedule for a local Solace app.
list_schedulesGET /api/v1/browser/schedulesRead back all active Hub schedules.
delete_scheduleDELETE /api/v1/browser/schedules/{schedule_id}Remove a schedule by UUID.
record_evidencePOST /api/v1/evidenceAppend a structured audit event to the evidence chain.
list_evidenceGET /api/v1/evidencePaginate existing evidence records for review.
get_hub_statusGET /healthInspect Hub health, readiness, and runtime state.

What Your Agent Can Do with Solace

Beyond navigate and click — Solace gives your agent a full sensory and memory system for the web.

📷 See the Page

Screenshot any page at full resolution. Capture DOM snapshots and ARIA accessibility trees. Your agent gets structured visual + semantic data — not just raw HTML.

📄 Extract Structured Data

Run /api/evaluateto execute JavaScript and return structured JSON. Extract tables, prices, form values, or any page data directly into your agent's context.

🔒 Scoped Permissions

Request only what you need. OAuth3 tokens are scoped (browser.navigate, browser.click, browser.fill), time-bounded, and revocable. Fail-closed by design.

📋 Automatic Evidence

Every agent action is automatically logged, hash-chained, and sealed. Your agent produces an audit trail without writing a single line of logging code.

♾ Recipe Memory

Solace remembers successful workflows as recipes. On replay, your agent skips the LLM entirely and runs the cached path for $0.001 — 99% cheaper than rediscovery.

💸 Budget Enforcement

Set per-session spending limits. Pass"budget_usd": 0.05in your token request and Solace hard-stops the agent when the budget is hit — no runaway costs.

🔎 Evidence Search

Query past runs with/api/evidence/search. Agents can look up what happened in previous sessions — useful for incremental tasks like "triage emails not seen since last run."

🌎 Session Persistence

Browser sessions survive between agent calls. Log in once, reuse the session. No re-authentication overhead. Cookies, local storage, and auth tokens persist across tasks.

⚡ Parallel Tabs

Open multiple browser contexts simultaneously. Your agent can scrape 10 pages in parallel, compare results, and merge findings — all with independent evidence trails.

🤖 Multi-Agent Swarms

Spawn multiple independent Solace Browser instances. Scout agents explore; coder agents act; skeptic agents verify. Each instance has its own session, budget, and evidence chain. Orchestrate from any scheduler (cron, Cloud Run, GitHub Actions).

🛈 E-Sign & FDA Part 11

Every approved action can be e-signed: the user records “I (Phuc) reviewed and approved this action on [timestamp]”. The signature is SHA-256 sealed into the hash chain. Compliant with FDA 21 CFR Part 11 §11.100 electronic signatures.

Agent Best Practices

Patterns that make your agent reliable, auditable, and cheap to run.

✅ Screenshot Before You Click

Always call/api/screenshotbefore a click action. This creates an evidence record of what the agent saw before acting — critical for audit trails and debugging failed runs.

POST /api/screenshot {"full_page": false}
POST /api/click {"selector": "#submit-btn"}

🔎 Snapshot for Structure, Screenshot for Vision

Use /api/aria-snapshot(ARIA accessibility tree, JSON) when your agent needs to understand page structure. Use/api/snapshotfor raw HTML. Use/api/screenshotfor visual layout and images.

GET /api/aria-snapshot  # returns ARIA JSON tree
POST /api/snapshot      # returns raw HTML
POST /api/screenshot    # returns PNG filepath

🔒 Request Minimal Scopes

Only request the OAuth3 scopes your task needs. A read-only research task should never havebrowser.fillscope. Narrow scopes prevent accidental side effects and satisfy compliance audits.

POST /oauth3/token {
  "user_id": "local-agent",
  "scopes": ["browser.navigate",
             "browser.screenshot"],
  "ttl_seconds": 300
}

♾ Check for Existing Recipes First

Before running a workflow with LLM tokens, call/api/recipes/match. If a recipe exists for the task, replay it at $0.001. Save the LLM call for genuinely new workflows.

POST /api/recipes/match {
  "task": "gmail inbox triage"
}
# → {"hit": true, "recipe_id": "gmail-v3"}

💸 Set a Budget on Every Session

Never let an agent run without a budget ceiling. Passbudget_usdin your token request. Solace will hard-stop the session when the limit is reached rather than silently overspending.

POST https://solaceagi.com/api/v1/oauth3/token {
  "api_key": "sw_sk_..."
}
# → {"access_token":"..."}

POST https://solaceagi.com/api/v1/oauth3/tokens
Authorization: Bearer sw_sk_...
{
  "scopes": ["files.read", "files.write"]
}
# → {"token":"o3_..."}
# Use header: X-OAuth3-Token: o3_...

🌎 Reuse Sessions for Authenticated Sites

Log in once and store the session token. Pass"session_id"in subsequent API calls to reuse cookies and auth state. Eliminates login flows from every agent run.

POST /api/navigate {
  "url": "https://app.example.com/inbox",
  "session_id": "sess_abc123"
}

Why Agent-Native Matters

AEO: Agent Engine Optimization

Just as SEO optimized for search crawlers, AEO optimizes for AI agents. Solace is the first platform built with agents as first-class users — not an afterthought.

Evidence Your Agents Can't Fake

Every agent action produces a SHA-256 hash-chained receipt. Your CISO can audit what the AI did. Your board can see the evidence. No black boxes.

Recipes That Make Agents Smarter

When an agent completes a task, it becomes a recipe. Next time: $0.001 replay — no LLM tokens consumed. Agents using Solace get faster and cheaper over time.

How Solace Compares

Developers choosing browser automation tools ask four questions: Does it persist sessions? Does it create an audit trail? Can I delegate to an AI without runaway costs? Will it survive a compliance audit? Here’s the honest answer for each option.

Feature Solace Browser Playwright direct browser-use / OpenClaw Bardeen / Zapier
Session persistence ✅ Cookies survive across runs ❌ Ephemeral by default ❌ No session memory ✅ Chrome extension state
SHA-256 audit trail ✅ Every action, hash-chained ❌ None built-in ❌ None ❌ Logs only (not tamper-evident)
FDA Part 11 e-sign ✅ Built in (/api/v1/esign) ❌ Not available ❌ Not available ❌ Not available
Budget / cost ceiling ✅ Per-token budget gates ❌ Unlimited (no gate) ❌ No budget control ✅ Plan limits only
Recipe replay at $0.001 ✅ After first successful run ❌ Always LLM cost ❌ Always LLM cost ✅ Zap replay (no LLM)
Agent-native file formats ✅ 21 formats (CLAUDE.md, AGENTS.md…) ❌ None ❌ None ❌ None
OAuth3 scoped delegation ✅ Time-bounded, revocable tokens ❌ Full access or nothing ❌ Full access or nothing ❌ App-level permissions only
Local-first (no cloud required) ✅ Runs fully offline ✅ Yes ✅ Mostly ❌ Cloud-dependent
MCP server ✅ 8 tools, JSON-RPC 2.0 (live) ❌ Not available ❌ Not available ❌ Not available

💬 Solace is not a Playwright wrapper. It’s an OAuth3 delegation layer on top of Playwright — adding session memory, evidence chains, budget gates, and agent-native formats that raw Playwright doesn’t have.

If You Are an AI Agent Reading This

This section is written directly for you — Claude Code, Codex, Cursor, Copilot, or any other AI agent that has arrived at this page. Here is exactly what you need to know, in the format that is most useful to you.

🤖 Your Capabilities Here

When Solace Browser is running (localhost:8888), you can: navigate to any URL, click any element by CSS selector, fill any form field, take screenshots, capture DOM snapshots, run JavaScript, and read SHA-256 evidence logs. Every action is atomic and evidence-sealed.

Check if Solace is available:

curl http://localhost:8888/api/status
# {"running": true, "status": "ready", "version": "...", "session": null}

📋 Machine-Readable Spec

Fetch the capability manifest programmatically. Use this as your source of truth for endpoint names and supported methods. Canonical path is /agents.json (not /api/agents.json).

curl http://localhost:8888/agents.json
curl https://www.solaceagi.com/agents.json
View agents.json ↗

🔎 Vision-First Pattern

If you are a vision-capable agent, this is the recommended pattern: navigate, screenshot, analyse the image, decide what to click, act, screenshot again to verify. Never assume an action succeeded without visual confirmation.

POST /api/navigate {"url": "..."}
POST /api/screenshot {}          # analyse this
POST /api/click {"selector":"#x"}
POST /api/screenshot {}          # verify result

⚠ Response Contract (Strict)

Do not rely on HTTP status alone. Some runtimes return 200 with an{"error": ...}body. Your agent must parse JSON and require success == true before proceeding.

# Robust rule:
# 1) Parse JSON response
# 2) if response.success is not true -> fail step
# 3) include response.error in escalation note

{"success": true, "url": "https://example.com", "status": 200}
{"error": "Page.fill: Timeout 30000ms exceeded."}

👥 Human Escalation Protocol

If you hit CAPTCHA, 2FA, approval ambiguity, or legal/compliance risk, stop action calls immediately. Return a structured{"escalate": true}message to your host orchestrator (do not loop retries blindly).

{
  "escalate": true,
  "reason": "2FA required",
  "last_step": "POST /api/click #sign-in",
  "evidence": "artifacts/screenshot-20260304-131500.png"
}

💸 Safe Execution Loop

Use a deterministic loop: health, navigate, inspect, act, verify, checkpoint. IncludeGET /api/page-snapshotbefore high-risk actions so runs stay auditable and avoid cascading errors.

GET  /api/health
POST /api/navigate   {"url":"..."}
GET  /api/page-snapshot
POST /api/click|fill {"selector":"..."}
POST /api/screenshot {"full_page":true}
GET  /api/status

🛈 How to Create an E-Sign Record

When a user approves an action you prepared, record their electronic signature. This creates an FDA 21 CFR Part 11 §11.100 compliant record: who approved, what they approved, and when — sealed into the hash chain. Required for regulated workflows.

# After user clicks Approve in the bottom rail:
POST /api/v1/esign/token
{
  "user_id": "phuc@example.com",
  "run_id": "run-abc123",
  "meaning": "reviewed_and_approved",
  "action_description": "Sent email reply to Li Li re: Solace",
  "timestamp": "2026-03-03T15:00:00Z"
}
# → {
#   "esign_hash": "sha256:abc...",
#   "sealed_at": "2026-03-03T15:00:01Z",
#   "chain_entry_id": 42,
#   "verifiable": true
# }

⚡ Multi-Agent Pattern

Spawn three agents for resilient automation: Scout (navigate + screenshot, read-only, L1 model) → Solver (click + fill + evaluate, L3 model) → Skeptic (verify output against evidence, L1 model). All three share arun_id; their evidence chains are merged at seal time.

# Scout: read-only token
POST /oauth3/token {"user_id":"scout","scopes":["browser.navigate","browser.screenshot"],"ttl_seconds":60}
# Solver: action token
POST /oauth3/token {"user_id":"solver","scopes":["browser.navigate","browser.click","browser.fill"],"ttl_seconds":60}
# Skeptic: verify token
POST /oauth3/token {"user_id":"skeptic","scopes":["browser.snapshot","evidence.read"],"ttl_seconds":60}

# All share: {"run_id": "run-abc123"}

Error Reference for Agents

Every Solace error is typed. Retryable errors recover with backoff. Non-retryable errors need human intervention or task redesign.

Code Meaning Retryable Agent Action
SELECTOR_NOT_FOUNDCSS selector matched nothingNoCall/api/snapshotto rediscover structure
NAVIGATION_TIMEOUTPage took > 30s to loadYesRetry with exponential backoff (max 3 attempts)
BUDGET_EXCEEDEDSession spending limit hitNoEscalate to human operator for budget increase
SCOPE_DENIEDAction not in OAuth3 token scopesNoRequest new token with required scope
HUMAN_REQUIREDCAPTCHA or 2FA detectedNoCall{"escalate": true}immediately
NETWORK_ERRORTarget site unreachableYesRetry after 5s, then 30s, then fail
SESSION_EXPIREDAuth cookies staleNoRe-authenticate, then resume from last evidence checkpoint
ELEMENT_NOT_INTERACTABLEElement hidden or disabledYesWait 2s and retry; screenshot to verify state first

Prime Wiki — Semantic Wayback Machine

Every page Solace visits gets compressed into a 750-byte semantic snapshot — storing the page's structure, intent, navigation, and key entities. From that 750-byte seed, Solace reconstructs a full working HTML page completely offline. No server needed after the first download.

Flow split: localhost:8888handles local capture/execution in Solace Browser, whilehttps://solaceagi.com/api/v1/prime-wiki/* is the shared community index (push/pull/search/stats/render). Local-only mode works without the cloud index.

📷 750 bytes → Full Page

The Wayback Machine stores 100KB+ raw HTML per page (100,000 TB total). Solace stores a 750-byte semantic skeleton and reconstructs an equivalent page locally. 133x smaller. Zero centralized dependency.

# Reconstruct any indexed page locally:
python3 prime_wiki_render.py \
  --url https://github.com
# → prime-wiki-renders/github-com.html

🏛 Appstore-Focused Index

Unlike Wayback Machine (entire web), Solace focuses onappstore sites— the sites that have Solace automation recipes. GitHub, Gmail, LinkedIn, Substack, Notion, and more. Quality beats coverage.

GET /api/v1/prime-wiki/search?q=github
# Returns all indexed GitHub pages

GET /api/v1/prime-wiki/stats
# {"count": 7, "rtc_verified_count": 7}

🔒 Pro: Full Community Access

Free:collect snapshots from your own browsing.
Pro ($28/mo):instantly access the full community index — semantic memory for every appstore site. Skip LLM re-discovery. Save $10–50/month in tokens.

# Download all appstore codebooks once:
GET /api/v1/prime-wiki/assets?appstore_only=true
# Store at ~/.solace/pzip/assets/
# Decompress locally, forever — offline capable

📄 Render API — Server-Side Reconstruction

Reconstruct any indexed page directly from the API. Returns full HTML with embedded Prime Mermaid FSM state diagram. Useful for previews, screenshots, and recipe debugging.

# Render by URL (server decompresses + reconstructs):
GET /api/v1/prime-wiki/render?url=https://github.com

# Render by hash:
GET /api/v1/prime-wiki/render?url_hash=<sha256>
# ← Returns full HTML + Prime Mermaid diagram

🌎 Contribute Page Assets

Every Solace Browser visit to an appstore site creates a Prime Wiki snapshot. Opt-in to community sharing — your visits benefit every Pro member. Upload domain codebooks to accelerate decompression.

# Push a snapshot (community contribution):
POST /api/v1/prime-wiki/push
{"url_hash": "<sha256(normalized_url)>",
 "url_display": "https://github.com",
 "snapshot_b64": "<base64(gzip(json_snapshot))>",
 "original_size": 12345,
 "compressed_size": 912,
 "schema_version": "prime-wiki-v1",
 "page_type": "landing",
 "rtc_verified": true,
 "sha256_original": "<sha256(raw_json_bytes)>",
 "sha256_compressed": "<sha256(gzip_bytes)>"}

# Upload domain codebook (Pro):
POST /api/v1/prime-wiki/assets
{"domain": "github.com", "asset_b64": "..."}

☯ Yinyang: Your Agent’s On-Page Companion

Every page the Solace Browser visits gets a permanent dual-rail overlay. The top rail shows your agent’s state in real time. The bottom rail is a chat panel where you can talk to Yinyang directly. Both rails are injected viaadd_init_script— they survive navigation, page reloads, and CSP-locked pages like Gmail.

▲ Top Rail — Always Visible

A 32px bar pinned to the top of every page. Shows:[☯ Solace home]→ back to browser home with one click. Plus real-time state (IDLE / EXECUTING / PREVIEW_READY / DONE), current app name, and rotating value stats (pages visited, LLM calls, cost saved, session duration).

# Push a state update to the top rail:
POST /api/yinyang/notify
{"type": "state_update",
 "state": "EXECUTING",
 "app_name": "Gmail Triage"}

▼ Bottom Rail — Chat & Approve

A 36px collapsed chat panel at the bottom of every page. Auto-expands when state reachesPREVIEW_READY(your agent has prepared an action),BLOCKED(needs clarification), orFAILED. User clicksApprove or Decline— your agent receives the decision via WebSocket.

# WebSocket for real-time agent ↔ Yinyang:
ws://localhost:8888/ws/yinyang

# Push preview for user approval:
{"type": "bottom_rail_update",
 "payload": {
   "state": "PREVIEW_READY",
   "preview_text": "Reply to Li Li about...",
   "show_approve_reject": true,
   "run_id": "run-abc123"
 }}

🔔 Push Alerts — 3 Channels

Agents can push notifications to the user without interrupting their current page. Three channels:toast(3s bottom-right popup),popup(modal with action buttons),takeover(full-screen for critical approvals). All channels are FSM-gated — no alert fires without a valid state transition.

POST /api/yinyang/notify
{"type": "push_alert",
 "channel": "toast",
 "message": "Gmail triage complete: 12 sorted",
 "priority": "low"}

# channel: "toast" | "popup" | "takeover"
# priority: "low" | "high" | "critical"

🌏 Works on ALL Pages — Including Gmail

Rails are injected asPlaywright add_init_script— they persist across every navigation on the same browser context, including CSP-locked pages likeGmail, Google Docs, andNotion. The JS uses only DOM methods (noinnerHTML), bypassing TrustedHTML restrictions. Yinyang is always visible, always reachable.

🗣 Yinyang Chat API

Users can type directly to Yinyang from the bottom rail. Your agent receives messages via WebSocket and can respond. Use this for clarification requests, ambiguous approvals, or mid-task configuration changes. Every message is logged to the Part 11 evidence trail.

POST /api/yinyang/chat
Authorization: Bearer <api_key>
{"message": "User says: skip newsletters",
 "context": {"run_id": "run-abc123"}}
# → {"reply": "Got it. Skipping newsletters..."}

📦 Agent Results: Your Inbox, Outbox & Evidence

Every task your agent runs produces results that are accessible from the Solace Browser home page. Designed by the Jony Ive principle: always present, never intrusive, exactly what you need. The agent works; you review, sign, and ship.

📤 Inbox — Drafts Awaiting Review

Every draft your agent prepares (email reply, Substack post, LinkedIn comment) lands here before it’s sent. The inbox shows: sender context, agent-written draft, confidence score, estimated send time. Review and approve with one click — or edit before approving.

GET /api/v1/inbox
# {"items": [{
#   "id": "draft-abc",
#   "app": "gmail-inbox-triage",
#   "type": "email_reply",
#   "to": "li.li@...",
#   "subject": "Re: Solace user case",
#   "preview": "Hi Li Li, thanks for...",
#   "confidence": 0.91,
#   "status": "awaiting_approval"
# }]}

📥 Outbox — Sent & Scheduled

Approved items flow to the outbox. See what was sent, when, by which app, and with what evidence hash. Scheduled items show their next trigger time. Every outbox entry links to its full Part 11 evidence bundle.

GET /api/v1/outbox
# {"items": [{
#   "id": "sent-xyz",
#   "app": "gmail-inbox-triage",
#   "sent_at": "2026-03-03T14:30:00Z",
#   "to": "li.li@...",
#   "evidence_hash": "sha256:abc...",
#   "status": "sent"
# }]}

📅 Schedule & Calendar

Recurring tasks (morning brief, weekly digest, nightly archive) appear on the schedule. See next run time, last run result, and budget consumed this period. Agents can add to the schedule via API; users can pause, skip, or reschedule from the home page.

GET /api/v1/schedule
# {"items": [{
#   "app": "morning-brief",
#   "cron": "0 7 * * *",
#   "next_run": "2026-03-04T07:00:00Z",
#   "last_status": "DONE",
#   "budget_used_7d": "$0.12"
# }]}

📚 History — Recipe Run Log

Every recipe run is logged: app name, duration, tokens used, cost, outcome. Successful runs build the recipe cache for future $0.001 replays. Failed runs show where they broke and why — perfect for debugging app recipes.

GET /api/v1/history?limit=20
# {"runs": [{
#   "run_id": "run-abc",
#   "app": "gmail-inbox-triage",
#   "started": "2026-03-03T14:00:00Z",
#   "duration_s": 18,
#   "tokens": 1247,
#   "cost_usd": 0.00073,
#   "outcome": "DONE",
#   "recipe_replayed": false
# }]}

📷 FDA Part 11 Evidence

Every approved action generates a tamper-evident screenshot sequence. Accessible from the history panel: see exactly what the browser showed before your agent acted, what the agent proposed, and what was actually executed. SHA-256 hash-chained. E-signature ready.

GET /api/v1/evidence/{run_id}
# {"run_id": "run-abc",
#  "screenshots": [
#    {"step": 1, "url": "...", "sha256": "..."},
#    {"step": 2, "url": "...", "sha256": "..."}
#  ],
#  "seal": {"hash": "sha256:...",
#           "signed_at": "..."}}

📄 Prime Wiki Snapshots

When your agent visits a new site, it creates a Prime Wiki snapshot: an indexed map of all interactive elements (DOM selectors, ARIA roles, action paths). These snapshots power future recipe replay at $0.001. Accessible from the home page — browse, search, or export as Prime Mermaid FSM diagrams.

GET /api/v1/prime-wiki/list
# {"snapshots": [{
#   "domain": "mail.google.com",
#   "captured_at": "2026-03-03",
#   "selectors": 847,
#   "recipes": 3,
#   "mermaid_url": "/prime-wiki/gmail.md"
# }]}

🌟 Learning From Human Edits

When a user edits an agent-written draft before approving it, Solace captures the delta as apreference signal. Over time, the agent learns the user’s voice, tone, and style — without any explicit training. This is the feedback loop that makes agents get better the more you use them.

📝 How It Works

  1. Agent writes draft→ lands in Inbox withstatus: awaiting_approval
  2. User edits draft→ Solace diffs original vs edited text, extracts the delta
  3. User approves→ delta is stored as astyle preferencetagged to the app + recipient
  4. Next run→ agent receives style preferences in its system prompt:“User prefers: shorter sign-off, no exclamation marks, always mention the reference number”
  5. Score improves→ fewer edits needed over time. Convergence tracked in the history panel.

📊 Preference API

Agents can read style preferences before generating drafts. Preferences are stored per-app, per-recipient, and globally. Captured automatically when users edit — or manually teachable via API.

# Read preferences before drafting:
GET /api/v1/preferences?app=gmail-inbox-triage
# {"global": ["concise, 3 sentences max"],
#  "recipient:li.li@...": [
#    "mention reference number",
#    "no exclamation marks"
#  ]}

# User edit automatically captured:
POST /api/v1/preferences/signal
{"app": "gmail-inbox-triage",
 "original": "Hi Li Li! Thanks for...",
 "edited": "Hi Li Li, thanks for...",
 "recipient": "li.li@..."}

💡 The Right Pattern: Approve, Edit, Learn

Anti-Clippy law:never auto-approve, never auto-send. The human always sees the draft first. This is not a limitation — it’s the feature. Each approval is a training signal. Each edit is a correction. After 5–10 runs, the agent drafts with your voice. After 50 runs, it rarely needs editing at all. The evidence trail proves every decision was human-approved. Your productivity compounds, and your judgment is on record.

⚠ 0 COMPETITORS HAVE ALL THREE

🔎 Solace Inspector — The End of Manual QA as We Know It

Your AI agents are shipping untested code. Every dev team without a structured QA bridge is flying blind. Solace Inspector is the first — and only — tool that gives AI coding agents a standardized, evidence-sealed, human-approved QA protocol.

If your AI agent doesn’t use Solace Inspector, it has shitty QA. Full stop.

Agent Protocol

Any coding agent drops a JSON spec ininbox/. Picks up a sealed report fromoutbox/. No custom integration. No SDK. Any language. Any model.

Live
🔒

Evidence Chain

Every inspection is SHA-256 sealed with FDA 21 CFR Part 11 Architected evidence. Court-admissible. Tamper-evident. Permanent. Not “I tested it” — cryptographic proof.

Live

Human E-Sign Approval

AI proposes fixes. Human approves with one click. Anti-Clippy: never auto-approve. Every fix is a human decision on record. This is the killer feature. Nothing else has it.

Live
$0.00 / run Agent-native architecture. Zero LLM API calls in the runner. Your AI agent reads the sealed report and applies itsownmodel for analysis. The intelligence stays with your agent.

The HITL Loop (Human-in-the-Loop)

🤖 Your Agent
Writestest-spec.json to inbox/
🔎 Inspector
Navigate + ARIA + DOM + Heuristics + Screenshot → sealed report
🤖 Your Agent
Reads report, analyzes with own model, proposes fixes
👤 Human
Reviews 3 fixes in 30 seconds. Clicks Approve. Done.
🔒 Vault
SHA-256 sealed. Public evidence. FDA compliant. Forever.
# Step 1: Agent writes test spec to inbox/ (any format, any language)
cat > inbox/test-spec-001.json << EOF
{
  "spec_id": "my-app-home-001",
  "mode": "web",
  "target_url": "http://localhost:3000/",
  "page_name": "My App Home",
  "persona": "james_bach",
  "checks": {"aria": true, "heuristics": true, "screenshot": true}
}
EOF

# Step 2: Run the inspector (agent-native, $0.00 LLM cost)
python3 scripts/run_solace_inspector.py --inbox

# Step 3: Agent reads sealed report from outbox/
cat outbox/report-my-app-home-001-*.json
# {
#   "qa_score": 74,
#   "belt": "Yellow",
#   "heuristic_issues": [{"type": "accessibility", "msg": "3 images missing alt", "heuristic": "ARIA-1"}],
#   "agent_analysis_request": { "system_prompt": "You are James Bach...", "evidence_summary": {...} },
#   "agent_analysis_response": null,  ← YOU fill this in with your model
#   "fix_proposals": [],              ← YOU add proposals here
#   "evidence_hash": "sha256:a4f3...",  ← cryptographic seal
#   "human_approved": false
# }

🌐 Web Mode

Any browser app. Navigate + ARIA tree + DOM snapshot + HICCUPPS heuristics + full-page screenshot. Works on localhost, staging, production, or public URLs.

mode: "web"

⚙ CLI Mode

Any command-line tool. Subprocess execution + exit code assertion + stdout/stderr capture. Kent Beck: “Test what you fear.” Works on any CLI in any language.

mode: "cli"

📡 API Mode

REST/HTTP endpoints. Request + response schema validation + timing + security headers. Cem Kaner: “What is the quality risk in this context?”

mode: "api" Coming Sprint 3

Committee of Experts (Injected as Analysis Prompts)

James Bach
SBTM + HICCUPPS Oracle Heuristics
“Most tools check. Solace Inspector tests. It explores, learns, escalates to humans when judgment is needed.”
Cem Kaner
BBST + Context-Driven Testing
“The e-sign gate is not bureaucracy — it’s accountability. Without it, you don’t know who decided what.”
Elisabeth Hendrickson
Explore It! + Charter-Based
“Charter-based exploration made machine-readable. The test spec IS the charter. The report IS the session note.”
Kent Beck
TDD + Testability Lens
“Test what you fear. With Solace, you can test anything — web, CLI, API — with the same protocol.”
Michael Bolton
RST + Testing vs Checking
“Machines check. Humans test. Solace Inspector correctly divides the labor. Both leave evidence.”

Confirmed: Zero Competitors Have All Three

Tool Agent Protocol
inbox/outbox JSON
Evidence Chain
SHA-256 sealed
Human E-Sign
approve fixes
Cost/run
🔎 Solace Inspector $0.00
Playwright MCP varies
Ketryx (medical only) $$$
QA Wolf $2,000/mo
Mabl $800/mo
TestRigor partial partial $1,200/mo
Devin 2.0 $500/mo + $5/run

Research verified March 2026 across 15 tools. The FDA’s 2026 AI guidance is pushing the industry toward exactly what we already built. Regulation is catching up to us.6–12 months ahead of field.

Install in 30 Seconds

# Solace Inspector is built into Solace Browser.
# It is the default app — always present, cannot be uninstalled.

# If you have Solace Browser:
python3 scripts/run_solace_inspector.py --self-diagnostic

# First time? Install Solace Browser:
git clone https://github.com/solaceagi/solace-browser
cd solace-browser
python3 -m pip install -r requirements.txt
python3 web/server.py  # http://localhost:8791

# Then drop any test spec in inbox/ and run:
python3 scripts/run_solace_inspector.py --inbox

Machine-Readable Capabilities

The /agents.jsonendpoint returns structured capabilities for programmatic agent discovery.

View agents.json ↗