feat(docs): add YAML frontmatter to all docs (title/version/lastUpdated)

Every .md under docs/{architecture,guides,reference,frameworks,routing,
security,compression,ops,diagrams} plus docs/README.md now opens with:

  ---
  title: "<inferred from first H1>"
  version: 3.8.0
  lastUpdated: 2026-05-13
  ---

46 files updated (no docs were skipped — none had pre-existing
frontmatter). [slug]/page.tsx already reads frontmatter.version and
frontmatter.lastUpdated via gray-matter and renders a "v3.8.0" pill
plus a "Last updated" caption, so the UI picks these up automatically.

Helper: scripts/docs/add-frontmatter.mjs — idempotent (skips files that
already start with `---`), falls back to a humanized basename when no
leading H1 exists. Excludes docs/i18n/, docs/screenshots/,
docs/superpowers/, docs/diagrams/exported/. Re-runnable safely.

Also regenerated src/app/docs/lib/docs-auto-generated.ts: 44 docs across
8 sections (Architecture / Guides / Reference / Frameworks / Routing /
Security / Compression / Ops), which now includes the 14 docs that were
missing from the v3.7 sidebar (Cloud Agents, Guardrails, Memory, Skills,
Webhooks, Evals, Authz, Agent Protocols, Repository Map, Provider
Reference, Reasoning Replay, Stealth Guide, Tunnels Guide, Electron
Guide).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
diegosouzapw
2026-05-13 18:46:05 -03:00
parent 8a26128e93
commit caa262a4c5
48 changed files with 437 additions and 13 deletions

View File

@@ -1,3 +1,9 @@
---
title: "OmniRoute Documentation"
version: 3.8.0
lastUpdated: 2026-05-13
---
# OmniRoute Documentation
Navigable index of the OmniRoute documentation set. Topics are grouped by intent so you can find what you need quickly.

View File

@@ -1,3 +1,9 @@
---
title: "OmniRoute Architecture"
version: 3.8.0
lastUpdated: 2026-05-13
---
# OmniRoute Architecture
🌐 **Languages:** 🇺🇸 [English](./ARCHITECTURE.md) | 🇧🇷 [Português (Brasil)](i18n/pt-BR/ARCHITECTURE.md) | 🇪🇸 [Español](i18n/es/ARCHITECTURE.md) | 🇫🇷 [Français](i18n/fr/ARCHITECTURE.md) | 🇮🇹 [Italiano](i18n/it/ARCHITECTURE.md) | 🇷🇺 [Русский](i18n/ru/ARCHITECTURE.md) | 🇨🇳 [中文 (简体)](i18n/zh-CN/ARCHITECTURE.md) | 🇩🇪 [Deutsch](i18n/de/ARCHITECTURE.md) | 🇮🇳 [हिन्दी](i18n/in/ARCHITECTURE.md) | 🇹🇭 [ไทย](i18n/th/ARCHITECTURE.md) | 🇺🇦 [Українська](i18n/uk-UA/ARCHITECTURE.md) | 🇸🇦 [العربية](i18n/ar/ARCHITECTURE.md) | 🇯🇵 [日本語](i18n/ja/ARCHITECTURE.md) | 🇻🇳 [Tiếng Việt](i18n/vi/ARCHITECTURE.md) | 🇧🇬 [Български](i18n/bg/ARCHITECTURE.md) | 🇩🇰 [Dansk](i18n/da/ARCHITECTURE.md) | 🇫🇮 [Suomi](i18n/fi/ARCHITECTURE.md) | 🇮🇱 [עברית](i18n/he/ARCHITECTURE.md) | 🇭🇺 [Magyar](i18n/hu/ARCHITECTURE.md) | 🇮🇩 [Bahasa Indonesia](i18n/id/ARCHITECTURE.md) | 🇰🇷 [한국어](i18n/ko/ARCHITECTURE.md) | 🇲🇾 [Bahasa Melayu](i18n/ms/ARCHITECTURE.md) | 🇳🇱 [Nederlands](i18n/nl/ARCHITECTURE.md) | 🇳🇴 [Norsk](i18n/no/ARCHITECTURE.md) | 🇵🇹 [Português (Portugal)](i18n/pt/ARCHITECTURE.md) | 🇷🇴 [Română](i18n/ro/ARCHITECTURE.md) | 🇵🇱 [Polski](i18n/pl/ARCHITECTURE.md) | 🇸🇰 [Slovenčina](i18n/sk/ARCHITECTURE.md) | 🇸🇪 [Svenska](i18n/sv/ARCHITECTURE.md) | 🇵🇭 [Filipino](i18n/phi/ARCHITECTURE.md) | 🇨🇿 [Čeština](i18n/cs/ARCHITECTURE.md)

View File

@@ -1,3 +1,9 @@
---
title: "Authorization Guide"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Authorization Guide
> **Source of truth:** `src/server/authz/`, `src/shared/constants/publicApiRoutes.ts`, `src/lib/api/requireManagementAuth.ts`, `src/shared/utils/apiAuth.ts`

View File

@@ -1,3 +1,9 @@
---
title: "OmniRoute Codebase Documentation"
version: 3.8.0
lastUpdated: 2026-05-13
---
# OmniRoute Codebase Documentation
> **Version:** v3.8.0

View File

@@ -1,3 +1,9 @@
---
title: "Repository Map"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Repository Map
> **One-line description for every directory and root file.**

View File

@@ -1,3 +1,9 @@
---
title: "Resilience Guide"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Resilience Guide
OmniRoute has three distinct but related resilience mechanisms. Each has a different scope and purpose. Keep them separate when debugging routing behavior.

View File

@@ -1,3 +1,9 @@
---
title: "Compression Engines"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Compression Engines
OmniRoute compression is built around engine contracts. A mode can run one engine directly

View File

@@ -1,3 +1,9 @@
---
title: "🗜️ Prompt Compression Guide — OmniRoute"
version: 3.8.0
lastUpdated: 2026-05-13
---
# 🗜️ Prompt Compression Guide — OmniRoute
> Save 15-95% on eligible context automatically. For a quick overview, see the [README Compression section](../README.md#%EF%B8%8F-prompt-compression--save-15-95-eligible-tokens-automatically).

View File

@@ -1,3 +1,9 @@
---
title: "Compression Language Packs"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Compression Language Packs
Caveman compression can load language-specific rule packs in addition to the built-in English rules.

View File

@@ -1,3 +1,9 @@
---
title: "Compression Rules Format"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Compression Rules Format
Compression rules are JSON files loaded at runtime. They are intentionally data-only so new

View File

@@ -1,3 +1,9 @@
---
title: "RTK Compression"
version: 3.8.0
lastUpdated: 2026-05-13
---
# RTK Compression
RTK compression is OmniRoute's command-aware compression engine for terminal and tool output. It is

View File

@@ -1,3 +1,9 @@
---
title: "Diagrams"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Diagrams
Mermaid sources (`.mmd`) and exported SVGs for OmniRoute v3.8.0 architecture flows.

View File

@@ -1,3 +1,9 @@
---
title: "OmniRoute A2A Server Documentation"
version: 3.8.0
lastUpdated: 2026-05-13
---
# OmniRoute A2A Server Documentation
> Agent-to-Agent Protocol v0.3 — OmniRoute as an intelligent routing agent

View File

@@ -1,3 +1,9 @@
---
title: "Agent Protocols Guide"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Agent Protocols Guide
> **Source:** `src/lib/{a2a,acp,cloudAgent}/`, `src/app/api/{a2a,acp,cloud}/`, `src/app/api/v1/agents/`

View File

@@ -1,3 +1,9 @@
---
title: "Cloud Agents"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Cloud Agents
> **Source of truth:** `src/lib/cloudAgent/` and `src/app/api/v1/agents/tasks/`

View File

@@ -1,3 +1,9 @@
---
title: "Evaluations (Evals)"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Evaluations (Evals)
> **Source of truth:** `src/lib/evals/`, `src/lib/db/evals.ts`, `src/app/api/evals/`

View File

@@ -1,3 +1,9 @@
---
title: "OmniRoute MCP Server Documentation"
version: 3.8.0
lastUpdated: 2026-05-13
---
# OmniRoute MCP Server Documentation
> Model Context Protocol server with 37 tools across routing, cache, compression, memory, skills, and proxy operations.

View File

@@ -1,3 +1,9 @@
---
title: "Memory System"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Memory System
> **Source of truth:** `src/lib/memory/` and `src/app/api/memory/`

View File

@@ -1,3 +1,9 @@
---
title: "Skills Framework"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Skills Framework
> **Source of truth:** `src/lib/skills/` and `src/app/api/skills/`

View File

@@ -1,3 +1,9 @@
---
title: "Webhooks"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Webhooks
> **Source of truth:** `src/lib/webhookDispatcher.ts`, `src/lib/db/webhooks.ts`, `src/app/api/webhooks/`

View File

@@ -1,3 +1,9 @@
---
title: "🐳 Docker Guide — OmniRoute"
version: 3.8.0
lastUpdated: 2026-05-13
---
# 🐳 Docker Guide — OmniRoute
> Complete Docker deployment reference. For a quick start, see the [README Docker section](../README.md#-docker).

View File

@@ -1,3 +1,9 @@
---
title: "Electron Desktop Guide"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Electron Desktop Guide
> **Source of truth:** `electron/` workspace

View File

@@ -1,3 +1,9 @@
---
title: "OmniRoute — Dashboard Features Gallery"
version: 3.8.0
lastUpdated: 2026-05-13
---
# OmniRoute — Dashboard Features Gallery
🌐 **Main README translations:** 🇺🇸 [English](../README.md) | 🇧🇷 [Português (Brasil)](i18n/pt-BR/README.md) | 🇪🇸 [Español](i18n/es/README.md) | 🇫🇷 [Français](i18n/fr/README.md) | 🇮🇹 [Italiano](i18n/it/README.md) | 🇷🇺 [Русский](i18n/ru/README.md) | 🇨🇳 [中文 (简体)](i18n/zh-CN/README.md) | 🇩🇪 [Deutsch](i18n/de/README.md) | 🇮🇳 [हिन्दी](i18n/in/README.md) | 🇹🇭 [ไทย](i18n/th/README.md) | 🇺🇦 [Українська](i18n/uk-UA/README.md) | 🇸🇦 [العربية](i18n/ar/README.md) | 🇯🇵 [日本語](i18n/ja/README.md) | 🇻🇳 [Tiếng Việt](i18n/vi/README.md) | 🇧🇬 [Български](i18n/bg/README.md) | 🇩🇰 [Dansk](i18n/da/README.md) | 🇫🇮 [Suomi](i18n/fi/README.md) | 🇮🇱 [עברית](i18n/he/README.md) | 🇭🇺 [Magyar](i18n/hu/README.md) | 🇮🇩 [Bahasa Indonesia](i18n/id/README.md) | 🇰🇷 [한국어](i18n/ko/README.md) | 🇲🇾 [Bahasa Melayu](i18n/ms/README.md) | 🇳🇱 [Nederlands](i18n/nl/README.md) | 🇳🇴 [Norsk](i18n/no/README.md) | 🇵🇹 [Português (Portugal)](i18n/pt/README.md) | 🇷🇴 [Română](i18n/ro/README.md) | 🇵🇱 [Polski](i18n/pl/README.md) | 🇸🇰 [Slovenčina](i18n/sk/README.md) | 🇸🇪 [Svenska](i18n/sv/README.md) | 🇵🇭 [Filipino](i18n/phi/README.md) | 🇨🇿 [Čeština](i18n/cs/README.md)

View File

@@ -1,3 +1,9 @@
---
title: "i18n — Internationalization Guide"
version: 3.8.0
lastUpdated: 2026-05-13
---
# i18n — Internationalization Guide
OmniRoute supports **30 languages** with full dashboard UI translation, translated documentation, and RTL support for Arabic and Hebrew.

View File

@@ -1,3 +1,9 @@
---
title: "Progressive Web App (PWA) Guide"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Progressive Web App (PWA) Guide
OmniRoute ships as a fully installable Progressive Web App. When you access the dashboard from any mobile browser — Android (Chrome) or iOS (Safari) — you can "Add to Home Screen" and get a native app-like experience with no app store required.

View File

@@ -1,3 +1,9 @@
---
title: "📖 Setup Guide — OmniRoute"
version: 3.8.0
lastUpdated: 2026-05-13
---
# 📖 Setup Guide — OmniRoute
> Complete setup reference for OmniRoute. For the quick version, see the [Quick Start in README](../README.md#-quick-start).

View File

@@ -1,3 +1,9 @@
---
title: "Termux Headless Setup"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Termux Headless Setup
OmniRoute can run as a headless server on Android through Termux. The Electron desktop app is not supported in Termux, but the web dashboard and OpenAI-compatible API work from the local browser or from other devices on the same network.

View File

@@ -1,3 +1,9 @@
---
title: "Troubleshooting"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Troubleshooting
🌐 **Languages:** 🇺🇸 [English](./TROUBLESHOOTING.md) | 🇧🇷 [Português (Brasil)](i18n/pt-BR/TROUBLESHOOTING.md) | 🇪🇸 [Español](i18n/es/TROUBLESHOOTING.md) | 🇫🇷 [Français](i18n/fr/TROUBLESHOOTING.md) | 🇮🇹 [Italiano](i18n/it/TROUBLESHOOTING.md) | 🇷🇺 [Русский](i18n/ru/TROUBLESHOOTING.md) | 🇨🇳 [中文 (简体)](i18n/zh-CN/TROUBLESHOOTING.md) | 🇩🇪 [Deutsch](i18n/de/TROUBLESHOOTING.md) | 🇮🇳 [हिन्दी](i18n/in/TROUBLESHOOTING.md) | 🇹🇭 [ไทย](i18n/th/TROUBLESHOOTING.md) | 🇺🇦 [Українська](i18n/uk-UA/TROUBLESHOOTING.md) | 🇸🇦 [العربية](i18n/ar/TROUBLESHOOTING.md) | 🇯🇵 [日本語](i18n/ja/TROUBLESHOOTING.md) | 🇻🇳 [Tiếng Việt](i18n/vi/TROUBLESHOOTING.md) | 🇧🇬 [Български](i18n/bg/TROUBLESHOOTING.md) | 🇩🇰 [Dansk](i18n/da/TROUBLESHOOTING.md) | 🇫🇮 [Suomi](i18n/fi/TROUBLESHOOTING.md) | 🇮🇱 [עברית](i18n/he/TROUBLESHOOTING.md) | 🇭🇺 [Magyar](i18n/hu/TROUBLESHOOTING.md) | 🇮🇩 [Bahasa Indonesia](i18n/id/TROUBLESHOOTING.md) | 🇰🇷 [한국어](i18n/ko/TROUBLESHOOTING.md) | 🇲🇾 [Bahasa Melayu](i18n/ms/TROUBLESHOOTING.md) | 🇳🇱 [Nederlands](i18n/nl/TROUBLESHOOTING.md) | 🇳🇴 [Norsk](i18n/no/TROUBLESHOOTING.md) | 🇵🇹 [Português (Portugal)](i18n/pt/TROUBLESHOOTING.md) | 🇷🇴 [Română](i18n/ro/TROUBLESHOOTING.md) | 🇵🇱 [Polski](i18n/pl/TROUBLESHOOTING.md) | 🇸🇰 [Slovenčina](i18n/sk/TROUBLESHOOTING.md) | 🇸🇪 [Svenska](i18n/sv/TROUBLESHOOTING.md) | 🇵🇭 [Filipino](i18n/phi/TROUBLESHOOTING.md) | 🇨🇿 [Čeština](i18n/cs/TROUBLESHOOTING.md)

View File

@@ -1,3 +1,9 @@
---
title: "OmniRoute — Uninstall Guide"
version: 3.8.0
lastUpdated: 2026-05-13
---
# OmniRoute — Uninstall Guide
🌐 **Languages:** 🇺🇸 [English](./UNINSTALL.md) | 🇧🇷 [Português (Brasil)](i18n/pt-BR/UNINSTALL.md) | 🇪🇸 [Español](i18n/es/UNINSTALL.md) | 🇫🇷 [Français](i18n/fr/UNINSTALL.md) | 🇮🇹 [Italiano](i18n/it/UNINSTALL.md) | 🇷🇺 [Русский](i18n/ru/UNINSTALL.md) | 🇨🇳 [中文 (简体)](i18n/zh-CN/UNINSTALL.md) | 🇩🇪 [Deutsch](i18n/de/UNINSTALL.md) | 🇮🇳 [हिन्दी](i18n/in/UNINSTALL.md) | 🇹🇭 [ไทย](i18n/th/UNINSTALL.md) | 🇺🇦 [Українська](i18n/uk-UA/UNINSTALL.md) | 🇸🇦 [العربية](i18n/ar/UNINSTALL.md) | 🇯🇵 [日本語](i18n/ja/UNINSTALL.md) | 🇻🇳 [Tiếng Việt](i18n/vi/UNINSTALL.md) | 🇧🇬 [Български](i18n/bg/UNINSTALL.md) | 🇩🇰 [Dansk](i18n/da/UNINSTALL.md) | 🇫🇮 [Suomi](i18n/fi/UNINSTALL.md) | 🇮🇱 [עברית](i18n/he/UNINSTALL.md) | 🇭🇺 [Magyar](i18n/hu/UNINSTALL.md) | 🇮🇩 [Bahasa Indonesia](i18n/id/UNINSTALL.md) | 🇰🇷 [한국어](i18n/ko/UNINSTALL.md) | 🇲🇾 [Bahasa Melayu](i18n/ms/UNINSTALL.md) | 🇳🇱 [Nederlands](i18n/nl/UNINSTALL.md) | 🇳🇴 [Norsk](i18n/no/UNINSTALL.md) | 🇵🇹 [Português (Portugal)](i18n/pt/UNINSTALL.md) | 🇷🇴 [Română](i18n/ro/UNINSTALL.md) | 🇵🇱 [Polski](i18n/pl/UNINSTALL.md) | 🇸🇰 [Slovenčina](i18n/sk/UNINSTALL.md) | 🇸🇪 [Svenska](i18n/sv/UNINSTALL.md) | 🇵🇭 [Filipino](i18n/phi/UNINSTALL.md) | 🇨🇿 [Čeština](i18n/cs/UNINSTALL.md)

View File

@@ -1,3 +1,9 @@
---
title: "User Guide"
version: 3.8.0
lastUpdated: 2026-05-13
---
# User Guide
🌐 **Languages:** 🇺🇸 [English](./USER_GUIDE.md) | 🇧🇷 [Português (Brasil)](i18n/pt-BR/USER_GUIDE.md) | 🇪🇸 [Español](i18n/es/USER_GUIDE.md) | 🇫🇷 [Français](i18n/fr/USER_GUIDE.md) | 🇮🇹 [Italiano](i18n/it/USER_GUIDE.md) | 🇷🇺 [Русский](i18n/ru/USER_GUIDE.md) | 🇨🇳 [中文 (简体)](i18n/zh-CN/USER_GUIDE.md) | 🇩🇪 [Deutsch](i18n/de/USER_GUIDE.md) | 🇮🇳 [हिन्दी](i18n/in/USER_GUIDE.md) | 🇹🇭 [ไทย](i18n/th/USER_GUIDE.md) | 🇺🇦 [Українська](i18n/uk-UA/USER_GUIDE.md) | 🇸🇦 [العربية](i18n/ar/USER_GUIDE.md) | 🇯🇵 [日本語](i18n/ja/USER_GUIDE.md) | 🇻🇳 [Tiếng Việt](i18n/vi/USER_GUIDE.md) | 🇧🇬 [Български](i18n/bg/USER_GUIDE.md) | 🇩🇰 [Dansk](i18n/da/USER_GUIDE.md) | 🇫🇮 [Suomi](i18n/fi/USER_GUIDE.md) | 🇮🇱 [עברית](i18n/he/USER_GUIDE.md) | 🇭🇺 [Magyar](i18n/hu/USER_GUIDE.md) | 🇮🇩 [Bahasa Indonesia](i18n/id/USER_GUIDE.md) | 🇰🇷 [한국어](i18n/ko/USER_GUIDE.md) | 🇲🇾 [Bahasa Melayu](i18n/ms/USER_GUIDE.md) | 🇳🇱 [Nederlands](i18n/nl/USER_GUIDE.md) | 🇳🇴 [Norsk](i18n/no/USER_GUIDE.md) | 🇵🇹 [Português (Portugal)](i18n/pt/USER_GUIDE.md) | 🇷🇴 [Română](i18n/ro/USER_GUIDE.md) | 🇵🇱 [Polski](i18n/pl/USER_GUIDE.md) | 🇸🇰 [Slovenčina](i18n/sk/USER_GUIDE.md) | 🇸🇪 [Svenska](i18n/sv/USER_GUIDE.md) | 🇵🇭 [Filipino](i18n/phi/USER_GUIDE.md) | 🇨🇿 [Čeština](i18n/cs/USER_GUIDE.md)

View File

@@ -1,3 +1,9 @@
---
title: "Test Coverage Plan"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Test Coverage Plan
Last updated: 2026-05-13

View File

@@ -1,3 +1,9 @@
---
title: "OmniRoute Fly.io 部署指南"
version: 3.8.0
lastUpdated: 2026-05-13
---
# OmniRoute Fly.io 部署指南
本文档记录 OmniRoute 在 Fly.io 上的实际部署方法,适用于两类场景:

View File

@@ -1,3 +1,9 @@
---
title: "🌐 OmniRoute Proxy Guide"
version: 3.8.0
lastUpdated: 2026-05-13
---
# 🌐 OmniRoute Proxy Guide
> **Bypass geographic blocks, protect your identity, and route AI traffic through any proxy — with zero configuration complexity.**

View File

@@ -1,3 +1,9 @@
---
title: "Release Checklist"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Release Checklist
> **Last updated:** 2026-05-13 — v3.8.0

View File

@@ -1,3 +1,9 @@
---
title: "Tunnels Guide"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Tunnels Guide
> **Source of truth:** `src/lib/{cloudflaredTunnel,ngrokTunnel,tailscaleTunnel}.ts`, `src/app/api/tunnels/`

View File

@@ -1,3 +1,9 @@
---
title: "OmniRoute — Deployment Guide on VM with Cloudflare"
version: 3.8.0
lastUpdated: 2026-05-13
---
# OmniRoute — Deployment Guide on VM with Cloudflare
🌐 **Languages:** 🇺🇸 [English](./VM_DEPLOYMENT_GUIDE.md) | 🇧🇷 [Português (Brasil)](i18n/pt-BR/VM_DEPLOYMENT_GUIDE.md) | 🇪🇸 [Español](i18n/es/VM_DEPLOYMENT_GUIDE.md) | 🇫🇷 [Français](i18n/fr/VM_DEPLOYMENT_GUIDE.md) | 🇮🇹 [Italiano](i18n/it/VM_DEPLOYMENT_GUIDE.md) | 🇷🇺 [Русский](i18n/ru/VM_DEPLOYMENT_GUIDE.md) | 🇨🇳 [中文 (简体)](i18n/zh-CN/VM_DEPLOYMENT_GUIDE.md) | 🇩🇪 [Deutsch](i18n/de/VM_DEPLOYMENT_GUIDE.md) | 🇮🇳 [हिन्दी](i18n/in/VM_DEPLOYMENT_GUIDE.md) | 🇹🇭 [ไทย](i18n/th/VM_DEPLOYMENT_GUIDE.md) | 🇺🇦 [Українська](i18n/uk-UA/VM_DEPLOYMENT_GUIDE.md) | 🇸🇦 [العربية](i18n/ar/VM_DEPLOYMENT_GUIDE.md) | 🇯🇵 [日本語](i18n/ja/VM_DEPLOYMENT_GUIDE.md) | 🇻🇳 [Tiếng Việt](i18n/vi/VM_DEPLOYMENT_GUIDE.md) | 🇧🇬 [Български](i18n/bg/VM_DEPLOYMENT_GUIDE.md) | 🇩🇰 [Dansk](i18n/da/VM_DEPLOYMENT_GUIDE.md) | 🇫🇮 [Suomi](i18n/fi/VM_DEPLOYMENT_GUIDE.md) | 🇮🇱 [עברית](i18n/he/VM_DEPLOYMENT_GUIDE.md) | 🇭🇺 [Magyar](i18n/hu/VM_DEPLOYMENT_GUIDE.md) | 🇮🇩 [Bahasa Indonesia](i18n/id/VM_DEPLOYMENT_GUIDE.md) | 🇰🇷 [한국어](i18n/ko/VM_DEPLOYMENT_GUIDE.md) | 🇲🇾 [Bahasa Melayu](i18n/ms/VM_DEPLOYMENT_GUIDE.md) | 🇳🇱 [Nederlands](i18n/nl/VM_DEPLOYMENT_GUIDE.md) | 🇳🇴 [Norsk](i18n/no/VM_DEPLOYMENT_GUIDE.md) | 🇵🇹 [Português (Portugal)](i18n/pt/VM_DEPLOYMENT_GUIDE.md) | 🇷🇴 [Română](i18n/ro/VM_DEPLOYMENT_GUIDE.md) | 🇵🇱 [Polski](i18n/pl/VM_DEPLOYMENT_GUIDE.md) | 🇸🇰 [Slovenčina](i18n/sk/VM_DEPLOYMENT_GUIDE.md) | 🇸🇪 [Svenska](i18n/sv/VM_DEPLOYMENT_GUIDE.md) | 🇵🇭 [Filipino](i18n/phi/VM_DEPLOYMENT_GUIDE.md) | 🇨🇿 [Čeština](i18n/cs/VM_DEPLOYMENT_GUIDE.md)

View File

@@ -1,3 +1,9 @@
---
title: "API Reference"
version: 3.8.0
lastUpdated: 2026-05-13
---
# API Reference
🌐 **Languages:** 🇺🇸 [English](./API_REFERENCE.md) | 🇧🇷 [Português (Brasil)](i18n/pt-BR/API_REFERENCE.md) | 🇪🇸 [Español](i18n/es/API_REFERENCE.md) | 🇫🇷 [Français](i18n/fr/API_REFERENCE.md) | 🇮🇹 [Italiano](i18n/it/API_REFERENCE.md) | 🇷🇺 [Русский](i18n/ru/API_REFERENCE.md) | 🇨🇳 [中文 (简体)](i18n/zh-CN/API_REFERENCE.md) | 🇩🇪 [Deutsch](i18n/de/API_REFERENCE.md) | 🇮🇳 [हिन्दी](i18n/in/API_REFERENCE.md) | 🇹🇭 [ไทย](i18n/th/API_REFERENCE.md) | 🇺🇦 [Українська](i18n/uk-UA/API_REFERENCE.md) | 🇸🇦 [العربية](i18n/ar/API_REFERENCE.md) | 🇯🇵 [日本語](i18n/ja/API_REFERENCE.md) | 🇻🇳 [Tiếng Việt](i18n/vi/API_REFERENCE.md) | 🇧🇬 [Български](i18n/bg/API_REFERENCE.md) | 🇩🇰 [Dansk](i18n/da/API_REFERENCE.md) | 🇫🇮 [Suomi](i18n/fi/API_REFERENCE.md) | 🇮🇱 [עברית](i18n/he/API_REFERENCE.md) | 🇭🇺 [Magyar](i18n/hu/API_REFERENCE.md) | 🇮🇩 [Bahasa Indonesia](i18n/id/API_REFERENCE.md) | 🇰🇷 [한국어](i18n/ko/API_REFERENCE.md) | 🇲🇾 [Bahasa Melayu](i18n/ms/API_REFERENCE.md) | 🇳🇱 [Nederlands](i18n/nl/API_REFERENCE.md) | 🇳🇴 [Norsk](i18n/no/API_REFERENCE.md) | 🇵🇹 [Português (Portugal)](i18n/pt/API_REFERENCE.md) | 🇷🇴 [Română](i18n/ro/API_REFERENCE.md) | 🇵🇱 [Polski](i18n/pl/API_REFERENCE.md) | 🇸🇰 [Slovenčina](i18n/sk/API_REFERENCE.md) | 🇸🇪 [Svenska](i18n/sv/API_REFERENCE.md) | 🇵🇭 [Filipino](i18n/phi/API_REFERENCE.md) | 🇨🇿 [Čeština](i18n/cs/API_REFERENCE.md)

View File

@@ -1,3 +1,9 @@
---
title: "CLI Tools — OmniRoute v3.8.0"
version: 3.8.0
lastUpdated: 2026-05-13
---
# CLI Tools — OmniRoute v3.8.0
Last updated: 2026-05-13

View File

@@ -1,3 +1,9 @@
---
title: "Environment Variables Reference"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Environment Variables Reference
> Complete reference for every environment variable recognized by OmniRoute.

View File

@@ -1,3 +1,9 @@
---
title: "Free Tiers"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Free Tiers
> **Last consolidated:** 2026-05-13 — OmniRoute v3.8.0

View File

@@ -1,3 +1,9 @@
---
title: "Provider Reference"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Provider Reference
> **Auto-generated** from `src/shared/constants/providers.ts` — do not edit by hand.

View File

@@ -1,3 +1,9 @@
---
title: "OmniRoute Auto-Combo Engine"
version: 3.8.0
lastUpdated: 2026-05-13
---
# OmniRoute Auto-Combo Engine
> Self-managing model chains with adaptive scoring + zero-config auto-routing

View File

@@ -1,3 +1,9 @@
---
title: "Reasoning Replay Cache"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Reasoning Replay Cache
> **Source of truth:** `src/lib/db/reasoningCache.ts`, `open-sse/services/reasoningCache.ts`

View File

@@ -1,3 +1,9 @@
---
title: "Compliance & Audit"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Compliance & Audit
> **Source of truth:** `src/lib/compliance/`, `src/app/api/compliance/`

View File

@@ -1,3 +1,9 @@
---
title: "Guardrails"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Guardrails
> **Source of truth:** `src/lib/guardrails/`

View File

@@ -1,3 +1,9 @@
---
title: "Stealth Guide"
version: 3.8.0
lastUpdated: 2026-05-13
---
# Stealth Guide
> **Source of truth:** `open-sse/utils/tlsClient.ts`, `open-sse/services/{chatgptTlsClient,claudeCodeCCH,claudeCodeFingerprint,claudeCodeObfuscation,claudeCodeCompatible,antigravityObfuscation}.ts`, `open-sse/config/cliFingerprints.ts`, `src/mitm/`

View File

@@ -0,0 +1,148 @@
#!/usr/bin/env node
/**
* add-frontmatter.mjs — one-shot helper that ensures every documentation
* file under docs/<sub>/*.md and docs/README.md has a YAML frontmatter
* header with `title`, `version`, and `lastUpdated`.
*
* Idempotent: docs that already have a `---` block at the top are skipped
* (the existing frontmatter is preserved as-is). Files without a leading
* `# Title` heading fall back to the basename humanized as a title.
*
* Excludes: docs/i18n/, docs/screenshots/, docs/superpowers/,
* docs/diagrams/exported/. Subfolder READMEs are included.
*
* Usage: node scripts/docs/add-frontmatter.mjs [--version X.Y.Z] [--date YYYY-MM-DD]
*/
import { promises as fs } from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const ROOT = path.resolve(__dirname, "..", "..");
const DOCS_DIR = path.join(ROOT, "docs");
const EXCLUDE_PREFIXES = [
"docs/i18n/",
"docs/screenshots/",
"docs/superpowers/",
"docs/diagrams/exported/",
];
const args = process.argv.slice(2);
let version = "3.8.0";
let lastUpdated = "2026-05-13";
for (let i = 0; i < args.length; i += 1) {
if (args[i] === "--version" && args[i + 1]) {
version = args[i + 1];
i += 1;
} else if (args[i] === "--date" && args[i + 1]) {
lastUpdated = args[i + 1];
i += 1;
}
}
async function walk(dir, files = []) {
const entries = await fs.readdir(dir, { withFileTypes: true });
for (const entry of entries) {
const full = path.join(dir, entry.name);
if (entry.isDirectory()) {
await walk(full, files);
} else if (entry.isFile() && entry.name.endsWith(".md")) {
files.push(full);
}
}
return files;
}
function isExcluded(rel) {
return EXCLUDE_PREFIXES.some((p) => rel === p || rel.startsWith(p));
}
function hasFrontmatter(content) {
return /^---\r?\n/.test(content);
}
function extractTopHeading(content) {
const lines = content.replace(/^/, "").split(/\r?\n/);
for (const line of lines) {
const m = line.match(/^#\s+(.+?)\s*$/);
if (m) return m[1].trim();
// Allow blank/HTML-comment lines before the first heading
if (line.trim() === "" || /^<!--/.test(line.trim())) continue;
// Anything else (e.g. badge image, paragraph) — no usable heading
return null;
}
return null;
}
function humanizeBasename(filePath) {
const base = path.basename(filePath, ".md");
if (base.toLowerCase() === "readme") {
const parent = path.basename(path.dirname(filePath));
if (parent && parent !== "." && parent !== "docs") {
const cap = parent.charAt(0).toUpperCase() + parent.slice(1);
return `${cap} Docs`;
}
return "Documentation";
}
return base
.replace(/[-_]+/g, " ")
.replace(/\s+/g, " ")
.replace(/\b\w/g, (c) => c.toUpperCase());
}
function buildFrontmatter(title) {
// Quote title with double quotes; escape internal double quotes.
const safe = title.replace(/"/g, '\\"');
return [
`---`,
`title: "${safe}"`,
`version: ${version}`,
`lastUpdated: ${lastUpdated}`,
`---`,
``,
].join("\n");
}
async function main() {
const allFiles = await walk(DOCS_DIR);
const targets = allFiles
.map((abs) => ({ abs, rel: path.relative(ROOT, abs).replace(/\\/g, "/") }))
.filter(({ rel }) => !isExcluded(rel));
let added = 0;
let skipped = 0;
let noHeading = [];
for (const { abs, rel } of targets) {
const content = await fs.readFile(abs, "utf8");
if (hasFrontmatter(content)) {
skipped += 1;
continue;
}
let title = extractTopHeading(content);
if (!title) {
title = humanizeBasename(abs);
noHeading.push(rel);
}
const fm = buildFrontmatter(title);
const next = `${fm}\n${content.replace(/^/, "")}`;
await fs.writeFile(abs, next, "utf8");
added += 1;
console.log(`[add-frontmatter] added → ${rel}`);
}
console.log(`[add-frontmatter] done — added=${added} skipped=${skipped} total=${targets.length}`);
if (noHeading.length > 0) {
console.log(
`[add-frontmatter] fallback title used (no leading H1) for: ${noHeading.join(", ")}`
);
}
}
main().catch((err) => {
console.error(err);
process.exit(1);
});

View File

@@ -57,7 +57,7 @@ export const autoNavSections: AutoGenNavSection[] = [
items: [
{
slug: "docker-guide",
title: "🐳 Docker Guide",
title: "🐳 Docker Guide — OmniRoute",
fileName: "guides/DOCKER_GUIDE.md",
},
{
@@ -82,7 +82,7 @@ export const autoNavSections: AutoGenNavSection[] = [
},
{
slug: "setup-guide",
title: "Setup Guide",
title: "📖 Setup Guide — OmniRoute",
fileName: "guides/SETUP_GUIDE.md",
},
{
@@ -227,7 +227,7 @@ export const autoNavSections: AutoGenNavSection[] = [
},
{
slug: "compression-guide",
title: "🗜️ Prompt Compression Guide",
title: "🗜️ Prompt Compression Guide — OmniRoute",
fileName: "compression/COMPRESSION_GUIDE.md",
},
{
@@ -262,7 +262,7 @@ export const autoNavSections: AutoGenNavSection[] = [
},
{
slug: "proxy-guide",
title: "OmniRoute Proxy Guide",
title: "🌐 OmniRoute Proxy Guide",
fileName: "ops/PROXY_GUIDE.md",
},
{
@@ -294,6 +294,7 @@ export const autoSearchIndex: AutoGenSearchItem[] = [
"🌐 Languages: 🇺🇸 English 🇧🇷 Português (Brasil) 🇪🇸 Español 🇫🇷 Français 🇮🇹 Italiano 🇷🇺 Русский 🇨🇳 中文 (简体) 🇩🇪 Deutsch 🇮🇳 हिन्दी 🇹🇭 ไทย 🇺🇦 Українська 🇸🇦 العربية 🇯🇵 日本語 🇻🇳 Tiếng Việt 🇧🇬 Български 🇩🇰 Dansk 🇫🇮 Suomi 🇮🇱 עברית 🇭🇺 Magyar 🇮🇩 Bahasa Indonesia 🇰🇷 한국어 🇲\ud83c",
headings: [
"Executive Summary",
"Reference Diagrams",
"Scope and Boundaries",
"In Scope",
"Out of Scope",
@@ -302,7 +303,6 @@ export const autoSearchIndex: AutoGenSearchItem[] = [
"Core Runtime Components",
"1) API and Routing Layer (Next.js App Routes)",
"2) SSE + Translation Core",
"Major Subsystems (v3.8.0)",
],
},
{
@@ -371,7 +371,7 @@ export const autoSearchIndex: AutoGenSearchItem[] = [
fileName: "architecture/RESILIENCE_GUIDE.md",
section: "Architecture",
content:
"OmniRoute has three distinct but related resilience mechanisms. Each has a different scope and purpose. Keep them separate when debugging routing behavior. Scope: entire provider (e.g., glm, openai, anthropic). Purpose: stop sending traffic to a provider that is repeatedly failing at the upstream/se",
"OmniRoute has three distinct but related resilience mechanisms. Each has a different scope and purpose. Keep them separate when debugging routing behavior. Source: diagrams/resilience-3layers.mmd Scope: entire provider (e.g., glm, openai, anthropic). Purpose: stop sending traffic to a provider that ",
headings: [
"1. Provider Circuit Breaker",
"2. Connection Cooldown",
@@ -385,7 +385,7 @@ export const autoSearchIndex: AutoGenSearchItem[] = [
},
{
slug: "docker-guide",
title: "🐳 Docker Guide",
title: "🐳 Docker Guide — OmniRoute",
fileName: "guides/DOCKER_GUIDE.md",
section: "Guides",
content:
@@ -451,6 +451,8 @@ export const autoSearchIndex: AutoGenSearchItem[] = [
content:
"OmniRoute supports 30 languages with full dashboard UI translation, translated documentation, and RTL support for Arabic and Hebrew. 🌐 Languages: 🇺🇸 English 🇧🇷 Português (Brasil) 🇪🇸 Español 🇫🇷 Français 🇩🇪 Deutsch 🇮🇹 Italiano 🇷🇺 Русский 🇨🇳 中文 (简体) 🇯🇵 日本語 🇰🇷 한국어 🇸🇦 العربية 🇮🇳 ",
headings: [
"Translation pipeline (recommended — v3.8.0)",
"Legacy scripts (deprecated)",
"Quick Reference",
"Architecture",
"Source of Truth",
@@ -459,8 +461,6 @@ export const autoSearchIndex: AutoGenSearchItem[] = [
"Adding a New Language",
"1. Register the Locale",
"2. Add to Generator",
"3. Generate Initial Translation",
"4. Review & Fix Auto-Translations",
],
},
{
@@ -485,7 +485,7 @@ export const autoSearchIndex: AutoGenSearchItem[] = [
},
{
slug: "setup-guide",
title: "Setup Guide",
title: "📖 Setup Guide — OmniRoute",
fileName: "guides/SETUP_GUIDE.md",
section: "Guides",
content:
@@ -629,7 +629,7 @@ export const autoSearchIndex: AutoGenSearchItem[] = [
fileName: "reference/ENVIRONMENT.md",
section: "Reference",
content:
"Complete reference for every environment variable recognized by OmniRoute. For a quick-start template, see .env.example. These must be set before the first run. Without them, the application will either refuse to start or operate with insecure defaults. Variable Required Default Source File Descript",
"Complete reference for every environment variable recognized by OmniRoute. For a quick-start template, see .env.example. [!IMPORTANT] Every variable documented here must also appear in .env.example, and every variable in .env.example must appear here. npm run check:env-doc-sync enforces this on comm",
headings: [
"Table of Contents",
"1. Required Secrets",
@@ -963,7 +963,7 @@ export const autoSearchIndex: AutoGenSearchItem[] = [
},
{
slug: "compression-guide",
title: "🗜️ Prompt Compression Guide",
title: "🗜️ Prompt Compression Guide — OmniRoute",
fileName: "compression/COMPRESSION_GUIDE.md",
section: "Compression",
content:
@@ -1073,7 +1073,7 @@ export const autoSearchIndex: AutoGenSearchItem[] = [
},
{
slug: "proxy-guide",
title: "OmniRoute Proxy Guide",
title: "🌐 OmniRoute Proxy Guide",
fileName: "ops/PROXY_GUIDE.md",
section: "Ops",
content: