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.
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.
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).
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.
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.
OpenAI Codex
Drop into yourAGENTS.md. OpenAI Codex and ChatGPT agents read this file to understand available tools and capabilities.
Cursor
Drop into your.cursorrules. Cursor will reach for Solace whenever you ask it to interact with a website.
Windsurf
Drop into your.windsurfrules. Windsurf (Codeium) picks up Solace capabilities exactly like Cursor — same format, zero friction.
GitHub Copilot
Drop into.github/copilot-instructions.md. Copilot will suggest Solace API calls for browser tasks.
Aider
Pass as a system prompt with--system-prompt solace-aider.md. Aider will route all web interactions through Solace Browser automatically.
Continue.dev
Add to your.continue/config.jsoncontext providers. Continue will surface Solace browser automation as a native tool in VS Code and JetBrains.
Cline
Drop into your.clinerules/directory. Cline reads project rules at session start — Solace capabilities load automatically for every conversation.
RooCode
Place in.roocode/rules/. RooCode (formerly Roo-Cline) inherits Solace browser capabilities alongside its agentic coding modes.
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.
Google Jules
Jules readsAGENTS.mdbefore acting on GitHub issues. Solace instructions appear automatically when Jules handles any web-related task in your repo.
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.
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.
JetBrains AI
Add to.idea/ai-guidelines.md. JetBrains AI Assistant reads this file across IntelliJ, PyCharm, WebStorm, and all JetBrains IDEs.
Sourcegraph Cody
Place context in.cody/context/solace.md. Cody includes this file in its retrieval context — Solace instructions appear in every Cody conversation.
Tabnine
Configure via.tabnine/personalization. Tabnine's personalization file lets you teach it your team's toolchain — including Solace browser automation.
Replit AI
Add to your.replitfile's[ai]section. Replit AI reads project context from here — Solace becomes available in every Replit workspace.
Devin
Place in.devin/playbooks/. Devin reads project playbooks before starting long-horizon tasks — Solace browser tools are available for any web workflow.
Factory Droid
Factory readsAGENTS.md and .factory/configs. Droid agents inherit Solace capabilities when automating software development workflows.
Kilo Code
Add to.kilocode/rules/. Kilo Code follows the same project rules pattern as Cline — Solace instructions load for every agentic coding session.
llms.txt
Jeremy Howard standard for LLM-readable site descriptions. Drop in your project root for any LLM to understand Solace.
Download llms.txtWhat’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.
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"}
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}
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/navigate | POST | Load a URL in the browser | browser.navigate |
/api/click | POST | Click any CSS selector | browser.click |
/api/fill | POST | Fill a form field | browser.fill |
/api/screenshot | POST | Capture current page as PNG (saved to artifacts/) | browser.screenshot |
/api/evaluate | POST | Run JavaScript (expressionkey), return result | browser.evaluate |
/api/snapshot | POST | Capture raw HTML of page | browser.snapshot |
/api/aria-snapshot | GET | ARIA accessibility tree (structured JSON) | browser.snapshot |
/api/dom-snapshot | GET | DOM snapshot tree for deterministic structure checks | browser.snapshot |
/api/page-snapshot | GET | Combined page snapshot (ARIA + DOM + metadata) | browser.snapshot |
/api/health | GET | Liveness probe for runtime readiness | (none) |
/api/status | GET | Browser health, readiness, current URL, session | (none) |
/api/part11/status | GET | Part 11 capture state, session id, bytes written, last error | (none) |
/api/part11/config | POST | Configure Part 11 capture mode and audit directory | part11.configure |
/agents.json | GET | Machine-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 Tool | Maps to API | What It Does |
|---|---|---|
detect_apps | POST /detect | Detect which Solace apps are available for a URL. |
list_apps | GET /credits | List the apps currently loaded by the Hub. |
create_schedule | POST /api/v1/browser/schedules | Create a cron-backed schedule for a local Solace app. |
list_schedules | GET /api/v1/browser/schedules | Read back all active Hub schedules. |
delete_schedule | DELETE /api/v1/browser/schedules/{schedule_id} | Remove a schedule by UUID. |
record_evidence | POST /api/v1/evidence | Append a structured audit event to the evidence chain. |
list_evidence | GET /api/v1/evidence | Paginate existing evidence records for review. |
get_hub_status | GET /health | Inspect 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.jsonView 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_FOUND | CSS selector matched nothing | No | Call/api/snapshotto rediscover structure |
NAVIGATION_TIMEOUT | Page took > 30s to load | Yes | Retry with exponential backoff (max 3 attempts) |
BUDGET_EXCEEDED | Session spending limit hit | No | Escalate to human operator for budget increase |
SCOPE_DENIED | Action not in OAuth3 token scopes | No | Request new token with required scope |
HUMAN_REQUIRED | CAPTCHA or 2FA detected | No | Call{"escalate": true}immediately |
NETWORK_ERROR | Target site unreachable | Yes | Retry after 5s, then 30s, then fail |
SESSION_EXPIRED | Auth cookies stale | No | Re-authenticate, then resume from last evidence checkpoint |
ELEMENT_NOT_INTERACTABLE | Element hidden or disabled | Yes | Wait 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
- Agent writes draft→ lands in Inbox with
status: awaiting_approval - User edits draft→ Solace diffs original vs edited text, extracts the delta
- User approves→ delta is stored as astyle preferencetagged to the app + recipient
- Next run→ agent receives style preferences in its system prompt:
“User prefers: shorter sign-off, no exclamation marks, always mention the reference number” - 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.
🔎 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.
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.
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.
The HITL Loop (Human-in-the-Loop)
test-spec.json to inbox/
# 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)
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.