Files
OmniRoute/docs/diagrams/privacy-local.svg
Diego Rodrigues de Sa e Souza a856e3dd20 docs(readme): unified animated card system — audited v3.8.49 numbers, style contract across all cards, 5 new cards + rebuilt terminal (#7769)
* docs(readme): width + content overhaul — uniform tables, full CLI grid, condensed What's New

- All remaining spacer-calibrated tables re-targeted +100px so every table
  clamps to the same full column width as the Why OmniRoute table.
- Free-tier section: the 4 text bullets are gone — the animated budget card
  already carries all of it.
- What's New: every highlight condensed to a 1-2 line bullet (links kept).
- Compatible CLIs: the grid now lists all 25 tools from the dashboard
  registries (19 CLI Code's + 6 CLI Agents — Cline, Roo Code, Aider,
  ForgeCode, jcode, DeepSeek TUI, CodeWhale, Smelt, Pi, Grok Build, Hermes
  Agent, Goose, Open Interpreter, Warp AI, Agent Deck…) in 2 full-width
  rows; tools without a brand asset use a neutral terminal glyph
  (public/providers/cli-generic.svg) — no invented logos.
- Major-labs providers grid: 3x6 -> 2x9 full-width rows.
- Free Forever: 2 rows -> a single 7-card full-width row.
- Explore More section removed; Dashboard screenshots promoted to their own
  top-level section.

* docs(readme): force full-width card grids via in-cell spacers (GitHub strips td width)

* docs(readme): CLI grid 3 balanced rows, dark-safe Cline/Roo icons, fix 251->259 heading

* docs(readme): replace img spacers with NBSP runs — img max-width:100% collapses all-or-nothing past the container; text min-content never does

* docs(readme): calibrate card-grid NBSP runs to measured 3.14px (match Why table width); Roo icon via gh-dark-mode-only

* docs(readme): fine-tune markdown-table NBSP runs to measured widths (all ~1000px)

* docs(readme): sync stale counts to v3.8.49 reality — 268 providers (regen reference), 104 MCP tools, 25k+ tests, 26 CLIs, 40+ free-forever, 43 locales, 84 executors; fix 251-era anchors + nav

* docs(readme): animated hero card + The Promise six-pillar card — embed replaces hero text block, six static badges and the promise HTML table; all numbers from the v3.8.49 audit

* docs(diagrams): make hero/promise card reveals resilient — resting state is the final composition, entrance animates via 0s-begin hold pattern (GitHub camo drops offset-begin one-shots)

* docs(diagrams): pause-safe animation cycles — first frame is the finished composition (Chrome pause-animated-images freezes SVG imgs at t=0, where animation values override static attrs); hero/promise drop entrance reveals, budget bar/strike/dot cycles start at rest state

* docs(readme): unify all animated cards on the flat family style (no outer border/rounded frame/top strip) + fuse hero with the budget card at the top — star CTA back to text, money section moved under the hero, cli-terminal flattened with a t0 poster of the completed screen

* docs(readme): Why OmniRoute as an animated 10-row pain-vs-fix ledger card — extends the 6 original rows with resilience, key pools, local-first privacy and live analytics

* docs(readme): animated 18-strategy flow grid under the strategies table — one micro-stage per routing strategy, static tracks readable on the first frame

* docs(readme): blank line between strategies-grid img and the auto-combo sub note — the img HTML block was swallowing the note, rendering its markdown raw

* docs(readme): Private & Local-First as an 11-row guarantee ledger card — the 5 original bullets plus no-signup, loopback-only routes, header scrubbing, opt-in PII, sanitized errors and local audit trail, each with a receipt chip

* docs(readme): rebuild the resilience card — 3 self-healing layers with real mechanics (breaker states + thresholds, key cooldown with x2 backoff, model lockout) replacing the always-on combo card and the 3-row table

* docs(diagrams): rebuild cli-terminal as a compact half-height real terminal (1200x350) — pure terminal theme, real CLI commands and data tied to live counts, scrolling ticker of real subcommands

* docs(changelog): maintenance fragment for the README animated-card overhaul (#7769)
2026-07-19 12:11:13 -03:00

26 lines
12 KiB
XML

<svg viewBox="0 0 1200 650" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Private and local-first: your keys, your machine, your data — OmniRoute is a local proxy that never phones home. Runs 100 percent on your hardware via npm, Docker, desktop or phone with no OmniRoute cloud in the request path. Zero telemetry by default — prompts go only to the providers you choose. Credentials encrypted at rest with AES-256-GCM. No account and no sign-up — a local password guards the dashboard. Hardened gateway with API-key scoping, IP filtering, rate limits and prompt-injection guard. Process-spawning routes are loopback-only so a leaked token cannot spawn processes. Upstream header scrubbing strips deny-listed headers before every provider call. PII redaction and response sanitization are built in and strictly opt-in. Sanitized errors never leak stack traces, paths or internals. A local audit trail logs MCP tool calls and admin actions in your own SQLite. MIT licensed and fully open-source — audit every line, self-host forever.">
<desc>Animated privacy ledger: eleven fully readable rows on the first frame; a soft green highlight sweeps down the rows in a continuous cycle.</desc>
<defs>
<pattern id="gridPaperL" width="32" height="32" patternUnits="userSpaceOnUse">
<path d="M 32 0 L 0 0 0 32" fill="none" stroke="#ffffff" stroke-opacity="0.06" stroke-width="1"/>
</pattern>
<radialGradient id="bgGlowL" cx="24%" cy="12%" r="55%">
<stop offset="0%" stop-color="#e54d5e" stop-opacity="0.10"/>
<stop offset="55%" stop-color="#8b5cf6" stop-opacity="0.05"/>
<stop offset="100%" stop-color="#6366f1" stop-opacity="0"/>
</radialGradient>
</defs>
<rect width="1200" height="650" fill="#0b0e14"/>
<rect width="1200" height="650" fill="url(#gridPaperL)"/>
<rect width="1200" height="650" fill="url(#bgGlowL)"/>
<text x="40" y="56" font-family="Consolas, 'Courier New', monospace" font-size="13" letter-spacing="2.5" fill="#a78bfa">PRIVATE &amp; LOCAL-FIRST</text>
<line x1="252" y1="51" x2="1160" y2="51" stroke="#232b38" stroke-width="1.5"/>
<text x="40" y="100" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="23" font-weight="600" fill="#c9d1d9">Your keys, your machine, your data. OmniRoute is a <tspan fill="#a78bfa" font-weight="800">local proxy</tspan> — it <tspan fill="#7ee787" font-weight="800">never phones home</tspan>.</text>
<line x1="40" y1="122" x2="1160" y2="122" stroke="#232b38" stroke-width="1.5"/>
<rect x="40" y="140" width="1120" height="44" fill="#7ee787" opacity="0">
<animate attributeName="y" calcMode="discrete" values="140;184;228;272;316;360;404;448;492;536;580" keyTimes="0.0000;0.0909;0.1818;0.2727;0.3636;0.4545;0.5455;0.6364;0.7273;0.8182;0.9091" dur="16s" repeatCount="indefinite"/>
<animate attributeName="opacity" values="0;0.05;0.05;0" keyTimes="0;0.015;0.985;1" dur="16s" repeatCount="indefinite"/>
</rect>
<g transform="translate(48,154)" stroke="#7ee787" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M 6,0 L 11,2 L 11,6 C 11,9.5 8.8,11.6 6,12.8 C 3.2,11.6 1,9.5 1,6 L 1,2 Z"/><path d="M 3.8,6 L 5.5,7.8 L 8.4,4.4"/></g><text x="72" y="168" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="14.5" fill="#71717a"><tspan font-weight="700" fill="#c9d1d9">Runs 100% on your hardware</tspan> — npm, Docker, desktop, or your phone — no OmniRoute cloud in the request path</text><rect x="1065" y="153" width="95" height="21" rx="10" fill="#1c2330" stroke="#7ee787" stroke-opacity="0.35" stroke-width="1"/><text x="1112" y="167" text-anchor="middle" font-family="Consolas, 'Courier New', monospace" font-size="9.5" letter-spacing="0.5" fill="#7ee787">0 CLOUD HOPS</text><line x1="40" y1="184" x2="1160" y2="184" stroke="#232b38" stroke-width="1"/><g transform="translate(48,198)" stroke="#7ee787" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M 6,0 L 11,2 L 11,6 C 11,9.5 8.8,11.6 6,12.8 C 3.2,11.6 1,9.5 1,6 L 1,2 Z"/><path d="M 3.8,6 L 5.5,7.8 L 8.4,4.4"/></g><text x="72" y="212" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="14.5" fill="#71717a"><tspan font-weight="700" fill="#c9d1d9">Zero telemetry by default</tspan> — your prompts go only to the providers you choose, nowhere else</text><rect x="1097" y="197" width="63" height="21" rx="10" fill="#1c2330" stroke="#7ee787" stroke-opacity="0.35" stroke-width="1"/><text x="1128" y="211" text-anchor="middle" font-family="Consolas, 'Courier New', monospace" font-size="9.5" letter-spacing="0.5" fill="#7ee787">DEFAULT</text><line x1="40" y1="228" x2="1160" y2="228" stroke="#232b38" stroke-width="1"/><g transform="translate(48,242)" stroke="#7ee787" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M 6,0 L 11,2 L 11,6 C 11,9.5 8.8,11.6 6,12.8 C 3.2,11.6 1,9.5 1,6 L 1,2 Z"/><path d="M 3.8,6 L 5.5,7.8 L 8.4,4.4"/></g><text x="72" y="256" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="14.5" fill="#71717a"><tspan font-weight="700" fill="#c9d1d9">Credentials encrypted at rest</tspan> — API keys &amp; OAuth tokens sealed on your own disk</text><rect x="1072" y="241" width="88" height="21" rx="10" fill="#1c2330" stroke="#7ee787" stroke-opacity="0.35" stroke-width="1"/><text x="1116" y="255" text-anchor="middle" font-family="Consolas, 'Courier New', monospace" font-size="9.5" letter-spacing="0.5" fill="#7ee787">AES-256-GCM</text><line x1="40" y1="272" x2="1160" y2="272" stroke="#232b38" stroke-width="1"/><g transform="translate(48,286)" stroke="#7ee787" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M 6,0 L 11,2 L 11,6 C 11,9.5 8.8,11.6 6,12.8 C 3.2,11.6 1,9.5 1,6 L 1,2 Z"/><path d="M 3.8,6 L 5.5,7.8 L 8.4,4.4"/></g><text x="72" y="300" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="14.5" fill="#71717a"><tspan font-weight="700" fill="#c9d1d9">No account, no sign-up</tspan> — a local password guards the dashboard — OmniRoute never asks who you are</text><rect x="1078" y="285" width="82" height="21" rx="10" fill="#1c2330" stroke="#7ee787" stroke-opacity="0.35" stroke-width="1"/><text x="1119" y="299" text-anchor="middle" font-family="Consolas, 'Courier New', monospace" font-size="9.5" letter-spacing="0.5" fill="#7ee787">LOCAL AUTH</text><line x1="40" y1="316" x2="1160" y2="316" stroke="#232b38" stroke-width="1"/><g transform="translate(48,330)" stroke="#7ee787" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M 6,0 L 11,2 L 11,6 C 11,9.5 8.8,11.6 6,12.8 C 3.2,11.6 1,9.5 1,6 L 1,2 Z"/><path d="M 3.8,6 L 5.5,7.8 L 8.4,4.4"/></g><text x="72" y="344" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="14.5" fill="#71717a"><tspan font-weight="700" fill="#c9d1d9">Hardened gateway</tspan> — API-key scoping, IP filtering, rate limits, prompt-injection guard</text><rect x="1072" y="329" width="88" height="21" rx="10" fill="#1c2330" stroke="#7ee787" stroke-opacity="0.35" stroke-width="1"/><text x="1116" y="343" text-anchor="middle" font-family="Consolas, 'Courier New', monospace" font-size="9.5" letter-spacing="0.5" fill="#7ee787">AUTHZ TIERS</text><line x1="40" y1="360" x2="1160" y2="360" stroke="#232b38" stroke-width="1"/><g transform="translate(48,374)" stroke="#7ee787" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M 6,0 L 11,2 L 11,6 C 11,9.5 8.8,11.6 6,12.8 C 3.2,11.6 1,9.5 1,6 L 1,2 Z"/><path d="M 3.8,6 L 5.5,7.8 L 8.4,4.4"/></g><text x="72" y="388" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="14.5" fill="#71717a"><tspan font-weight="700" fill="#c9d1d9">Process routes are loopback-only</tspan> — a token leaked through a tunnel can&#8217;t spawn processes</text><rect x="1084" y="373" width="76" height="21" rx="10" fill="#1c2330" stroke="#7ee787" stroke-opacity="0.35" stroke-width="1"/><text x="1122" y="387" text-anchor="middle" font-family="Consolas, 'Courier New', monospace" font-size="9.5" letter-spacing="0.5" fill="#7ee787">127.0.0.1</text><line x1="40" y1="404" x2="1160" y2="404" stroke="#232b38" stroke-width="1"/><g transform="translate(48,418)" stroke="#7ee787" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M 6,0 L 11,2 L 11,6 C 11,9.5 8.8,11.6 6,12.8 C 3.2,11.6 1,9.5 1,6 L 1,2 Z"/><path d="M 3.8,6 L 5.5,7.8 L 8.4,4.4"/></g><text x="72" y="432" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="14.5" fill="#71717a"><tspan font-weight="700" fill="#c9d1d9">Upstream header scrubbing</tspan> — deny-listed headers stripped before every provider call</text><rect x="1084" y="417" width="76" height="21" rx="10" fill="#1c2330" stroke="#7ee787" stroke-opacity="0.35" stroke-width="1"/><text x="1122" y="431" text-anchor="middle" font-family="Consolas, 'Courier New', monospace" font-size="9.5" letter-spacing="0.5" fill="#7ee787">DENY-LIST</text><line x1="40" y1="448" x2="1160" y2="448" stroke="#232b38" stroke-width="1"/><g transform="translate(48,462)" stroke="#7ee787" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M 6,0 L 11,2 L 11,6 C 11,9.5 8.8,11.6 6,12.8 C 3.2,11.6 1,9.5 1,6 L 1,2 Z"/><path d="M 3.8,6 L 5.5,7.8 L 8.4,4.4"/></g><text x="72" y="476" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="14.5" fill="#71717a"><tspan font-weight="700" fill="#c9d1d9">PII redaction &amp; response sanitization</tspan> — built in, strictly opt-in — payloads are never mutated by default</text><rect x="1104" y="461" width="56" height="21" rx="10" fill="#1c2330" stroke="#7ee787" stroke-opacity="0.35" stroke-width="1"/><text x="1132" y="475" text-anchor="middle" font-family="Consolas, 'Courier New', monospace" font-size="9.5" letter-spacing="0.5" fill="#7ee787">OPT-IN</text><line x1="40" y1="492" x2="1160" y2="492" stroke="#232b38" stroke-width="1"/><g transform="translate(48,506)" stroke="#7ee787" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M 6,0 L 11,2 L 11,6 C 11,9.5 8.8,11.6 6,12.8 C 3.2,11.6 1,9.5 1,6 L 1,2 Z"/><path d="M 3.8,6 L 5.5,7.8 L 8.4,4.4"/></g><text x="72" y="520" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="14.5" fill="#71717a"><tspan font-weight="700" fill="#c9d1d9">Sanitized errors</tspan> — responses never leak stack traces, paths or internals</text><rect x="1091" y="505" width="69" height="21" rx="10" fill="#1c2330" stroke="#7ee787" stroke-opacity="0.35" stroke-width="1"/><text x="1126" y="519" text-anchor="middle" font-family="Consolas, 'Courier New', monospace" font-size="9.5" letter-spacing="0.5" fill="#7ee787">NO LEAKS</text><line x1="40" y1="536" x2="1160" y2="536" stroke="#232b38" stroke-width="1"/><g transform="translate(48,550)" stroke="#7ee787" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M 6,0 L 11,2 L 11,6 C 11,9.5 8.8,11.6 6,12.8 C 3.2,11.6 1,9.5 1,6 L 1,2 Z"/><path d="M 3.8,6 L 5.5,7.8 L 8.4,4.4"/></g><text x="72" y="564" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="14.5" fill="#71717a"><tspan font-weight="700" fill="#c9d1d9">Local audit trail</tspan> — MCP tool calls &amp; admin actions logged in your SQLite, not ours</text><rect x="1097" y="549" width="63" height="21" rx="10" fill="#1c2330" stroke="#7ee787" stroke-opacity="0.35" stroke-width="1"/><text x="1128" y="563" text-anchor="middle" font-family="Consolas, 'Courier New', monospace" font-size="9.5" letter-spacing="0.5" fill="#7ee787">YOUR DB</text><line x1="40" y1="580" x2="1160" y2="580" stroke="#232b38" stroke-width="1"/><g transform="translate(48,594)" stroke="#7ee787" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M 6,0 L 11,2 L 11,6 C 11,9.5 8.8,11.6 6,12.8 C 3.2,11.6 1,9.5 1,6 L 1,2 Z"/><path d="M 3.8,6 L 5.5,7.8 L 8.4,4.4"/></g><text x="72" y="608" font-family="Inter, 'Segoe UI', Arial, Helvetica, system-ui, sans-serif" font-size="14.5" fill="#71717a"><tspan font-weight="700" fill="#c9d1d9">MIT licensed &amp; fully open-source</tspan> — audit every line, self-host forever</text><rect x="1123" y="593" width="37" height="21" rx="10" fill="#1c2330" stroke="#7ee787" stroke-opacity="0.35" stroke-width="1"/><text x="1142" y="607" text-anchor="middle" font-family="Consolas, 'Courier New', monospace" font-size="9.5" letter-spacing="0.5" fill="#7ee787">MIT</text>
</svg>