1,104 mirrors rewritten over five passes of run-translation on the 22-source core set: the 14 sources edited since their translation, the 322 mirrors that were still English copies, and the frontmatter the old extractor leaked into the newer locales' bodies. The pipeline now caches per-`## `-section hashes and retranslates only changed sections, never reuses a section that is still English, rebuilds English-copy / leaked mirrors even when the source is unchanged, merges the state on save (parallel runs), and the drift gate (scoped to the core set) is blocking. Final audit: 0 stale, 0 English copies, 0 leaked frontmatter across 1,430 core mirrors. ⚠️ base-red inherited: #12732
81 KiB
OmniRoute Codebase Documentation (Norsk)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Versjon: v3.8.51 Sist oppdatert: 2026-06-28 Målgruppe: Utviklere som bidrar til OmniRoute eller bygger integrasjoner på toppen av det.
For overordnede arkitekturdiagrammer og begrunnelsen bak hvert delsystem, les ARCHITECTURE.md. For grundige gjennomganger av individuelle delsystemer (Auto Combo, MCP-server, A2A-server, Skills, Memory, Cloud Agents, Resilience, Compression osv.), se de dedikerte filene i denne
docs/-mappen.
Denne filen beskriver hva som finnes i repositoriet i dag, slik at en ny utvikler kan navigere i trestrukturen, forstå lagdelingen ved kjøring og vite hvor kode skal legges til uten å opprette nye moduler.
1. Teknologistakk
| Område | Valg |
|---|---|
| Webrammeverk | Next.js 16 (App Router, frittstående utdata, ingen global mellomvare) |
| Språk | TypeScript 6.0+ — mål ES2022, module: esnext, moduleResolution: bundler, strict: false |
| Kjøremiljø | Node.js >=22.22.2 <23 eller >=24.0.0 <27 (håndheves via engines + SUPPORTED_NODE_RANGE) |
| Database | SQLite via better-sqlite3 (singleton, WAL-journalføring) |
| Skrivebord | Electron 41 + electron-builder 26.10 (separat arbeidsområde i electron/) |
| Tester | Nodes innebygde testkjører (enhets-/integrasjonstester), Vitest (MCP, autoCombo, cache), Playwright (e2e + protocols-e2e) |
| Bygging | Frittstående Next.js via scripts/build/build-next-isolated.mjs |
| Lint/format | Flat ESLint-konfigurasjon + Prettier (lint-staged via Husky før commit) |
| Modulsystem | ESM overalt ("type": "module") |
| Arbeidsområder | npm-arbeidsområde — open-sse er det eneste underarbeidsområdet |
Stialiaser (tsconfig.json):
@/*→src/*@omniroute/open-sse→open-sse/index.ts@omniroute/open-sse/*→open-sse/*
Standard HTTP-port: 20128 (API-et og kontrollpanelet deler samme prosess). Data-
mappen angis med miljøvariabelen DATA_DIR, med ~/.omniroute/ som standard.
2. Repositoriets struktur
OmniRoute/
├── src/ Next.js-applikasjon (App Router, biblioteker, domene, server, delt kode)
├── open-sse/ Arbeidsområde for strømmemotoren (@omniroute/open-sse)
├── electron/ Skrivebordsinnpakning (Electron 41-hovedprosess + preload)
├── bin/ CLI-inngangspunkter (omniroute, reset-password)
├── tests/ Enhets-, integrasjons-, e2e-, protocols-e2e-, oversetter- og sikkerhetstester samt testdata
├── scripts/ Hjelpeskript for bygging, synkronisering, kontroller, migrering og kjøring
├── docs/ Offentlig dokumentasjon (denne mappen)
├── public/ Statiske ressurser, PWA-manifest, service worker
├── config/ Eksempler på kjøretidskonfigurasjon
├── images/ Markedsførings-/skjermbilderessurser
├── _ideia/, _references/, _mono_repo/, _tasks/ Internt arbeids-/planleggingsmateriale (distribueres ikke)
├── CLAUDE.md Regler for repositoriet for Claude Code
├── AGENTS.md Grundigere arkitekturreferanse for agenter
├── package.json v3.8.51, rot for arbeidsområdet
└── tsconfig.json Stialiaser + sentrale kompilatoralternativer
3. src/ — Next.js-applikasjon
src/
├── app/ App Router-sider + API-ruter
├── lib/ Kjernebiblioteker (database, autentisering, OAuth, ferdigheter, minne, …)
├── domain/ Rent domenelag (policy, reserve, kostnad, låsing, …)
├── server/ Moduler kun for serveren (autorisasjon, CORS, autentisering)
├── shared/ Typer, konstanter, validering, kontrakter, verktøy (trygge på tvers av grenser)
├── mitm/ Hjelpefunksjoner for mellommannsproxy til CLI-integrasjon
├── models/ Lokale modellmetadata / aliaser
├── sse/ Eldre SSE-håndterere som fortsatt ligger under src/ (ikke open-sse/)
├── store/ Tilstandslagre på klientsiden
├── middleware/ Verktøy for mellomvare på rutenivå (ikke global Next.js-mellomvare)
├── scripts/ Skript i kodetreet som kan importeres av applikasjonskode
├── types/ Omgivende og delte TS-typer
├── i18n/ Lokaliseringspakker
├── instrumentation.ts Next.js-instrumenteringskrok
├── instrumentation-node.ts
└── proxy.ts Hjelpefunksjon for oppstart av proxy på toppnivå
3.1 src/app/ — App Router
App Router eksponerer både kontrollpanelgrensesnittet og det offentlige HTTP-API-et samt administrasjons-API-et. Det finnes ingen global mellomvare — oppfanging utføres per rute.
Segmenter på toppnivå under src/app/:
| Bane | Formål |
|---|---|
api/ |
Alle HTTP API-ruter (se oversikten nedenfor) |
a2a/ |
A2A JSON-RPC 2.0-endepunkt (POST /a2a) |
.well-known/agent.json/ |
Oppdagelsesdokument for A2A Agent Card |
(dashboard)/ |
Kontrollpanelgrensesnitt (rutegruppe, uten URL-prefiks) |
auth/, login/, forgot-password/, callback/ |
Autentiseringsflyter |
landing/ |
Markedsførings-/landingsside |
docs/ |
Innebygd visning av API-dokumentasjon |
status/, maintenance/, offline/ |
Driftssider |
privacy/, terms/ |
Juridiske sider |
400/, 401/, 403/, 408/, 429/, 500/, 502/, 503/ |
Statiske feilsider |
error.tsx, global-error.tsx, not-found.tsx, forbidden/, loading.tsx |
Rammeverksgrenser for feil/lasting |
layout.tsx, page.tsx, globals.css, manifest.ts |
Rotskall |
3.1.1 src/app/(dashboard)/dashboard/ — Grensesnittsider
agents, analytics, api-manager, audit, auto-combo, batch, cache,
changelog, cli-tools, cloud-agents, combos, compression, context,
costs, endpoint, health, limits, logs, memory, onboarding,
playground, providers, search-tools, settings, skills, system,
translator, usage, webhooks, samt page.tsx, HomePageClient.tsx og
BootstrapBanner.tsx i roten.
3.1.2 src/app/api/ — API-grupper på toppnivå
src/app/api/
├── a2a/{status, tasks}
├── acp/
├── admin/
├── analytics/
├── assess/
├── auth/
├── batches/
├── cache/
├── cli-tools/
├── cloud/{codex-responses-ws}
├── combos/
├── compliance/
├── compression/
├── context/
├── db/, db-backups/
├── evals/
├── fallback/
├── files/
├── health/
├── init/
├── internal/{concurrency}
├── keys/
├── logs/
├── mcp/{audit, sse, status, stream, tools}
├── memory/{health, [id]/, route.ts}
├── model-combo-mappings/
├── models/
├── monitoring/
├── oauth/
├── openapi/
├── policies/
├── pricing/
├── provider-metrics/, provider-models/, provider-nodes/
├── providers/
├── rate-limit/, rate-limits/
├── resilience/
├── restart/, shutdown/
├── search/
├── sessions/
├── settings/
├── skills/{executions, [id], install, marketplace, route.ts, skillssh}
├── storage/
├── sync/, synced-available-models/
├── system/
├── tags/
├── telemetry/
├── token-health/
├── translator/
├── tunnels/
├── services/ Administrasjon av innebygde tjenester (9router, cliproxy) — LOCAL_ONLY
├── upstream-proxy/
├── usage/
├── v1/ OpenAI-kompatibelt offentlig API
├── v1beta/ Gemini-lignende kompatibilitet
├── version-manager/
└── webhooks/
3.1.2a src/app/api/services/ — Administrasjon av innebygde tjenester
Ruter for installasjon, oppstart, avslutning og overvåking av 9Router og CLIProxyAPI.
Alle baner er klassifisert som LOCAL_ONLY (kun tilbakekobling, fast regel nr. 17) fordi de
kan kjøre npm install og opprette underprosesser.
src/app/api/services/
├── 9router/
│ ├── _lib.ts getOrInitSupervisor()-hjelpefunksjon
│ ├── install/route.ts POST — npm install via execFile
│ ├── start/route.ts POST — supervisor.start()
│ ├── stop/route.ts POST — supervisor.stop()
│ ├── restart/route.ts POST — supervisor.restart()
│ ├── update/route.ts POST — npm install av nyere versjon
│ ├── rotate-key/route.ts POST — generer ny API-nøkkel + start på nytt
│ ├── status/route.ts GET — direkte- + DB-status + versjonsmetadata
│ └── auto-start/route.ts POST — veksle auto_start-flagget
├── cliproxy/
│ ├── _lib.ts getOrInitSupervisor()-hjelpefunksjon
│ ├── install/route.ts POST — npm install
│ ├── start/route.ts POST — supervisor.start()
│ ├── stop/route.ts POST — supervisor.stop()
│ ├── restart/route.ts POST — supervisor.restart()
│ ├── update/route.ts POST — npm install av nyere versjon
│ ├── status/route.ts GET — direkte- + DB-status + versjonsmetadata
│ └── auto-start/route.ts POST — veksle auto_start-flagget
└── [name]/
└── logs/route.ts GET — SSE-logghale (deles av alle tjenester)
Tilhørende brukergrensesnitt for kontrollpanelet:
src/app/(dashboard)/dashboard/providers/services/ — side med to faner (CLIProxyAPI + 9Router).
Omvendt proxy for 9Routers innebygde brukergrensesnitt:
src/app/(dashboard)/dashboard/providers/services/[name]/embed/[[...path]]/route.ts
Fordypning: docs/frameworks/EMBEDDED-SERVICES.md
3.1.3 src/app/api/v1/ — OpenAI-kompatibelt offentlig API
v1/
├── accounts/[id]/ kontooppslag
├── agents/tasks/[id]/, agents/tasks/ A2A-inspirerte oppgaveendepunkter
├── api/ interne API-hjelpefunksjoner eksponert under v1/api
├── audio/{speech, transcriptions}/ TTS + STT
├── batches/[id]/{cancel}, batches/ OpenAI Batches API
├── chat/completions/ Chat Completions (hovedendepunktet)
├── completions/ eldre tekstfullføringer
├── embeddings/ vektorrepresentasjoner
├── files/[id]/, files/ Files API
├── _helpers/ delte rutehjelpere (ingen offentlig URL)
├── images/{edits, generations}/ bildegenerering + redigering
├── issues/ hjelpeendepunkter for kategorisering
├── management/{proxies}/ administrasjonsavgrensede ruter i v1
├── messages/{count_tokens}/ kompatibilitet med meldinger i Anthropic-stil
├── models/ modelliste (`route.ts`, `catalog.ts`)
├── moderations/ moderering
├── music/ musikkgenerering
├── providers/[provider]/ operasjoner per leverandør
├── quotas/{check} kvotekontroller
├── registered-keys/ administrasjon av registrerte nøkler
├── rerank/ omrangering
├── responses/[...path]/ OpenAI Responses API (oppsamlingsrute)
├── search/ nettsøk
├── videos/ videogenerering
├── ws/ WebSocket-bro
└── route.ts indekshåndterer
Hver rutefil følger samme mønster:
Rute → CORS-preflight → Zod-validering av innhold → valgfri autentisering
→ håndheving av API-nøkkelpolicy → delegering til håndterer (open-sse)
v1beta/ er det Gemini-kompatible grensesnittet (en tynn innpakning som oversetter til
den samme open-sse/handlers/-behandlingskjeden).
3.2 src/lib/ — Kjernebiblioteker
Importer alltid data, synkronisering, OAuth, ferdigheter, minne osv. gjennom disse modulene. Tabellen grupperer de faktiske katalogene og nevneverdige filene på toppnivå.
| Modul | Formål |
|---|---|
a2a/ |
A2A-protokollserver: taskManager.ts, streaming.ts, taskExecution.ts, routingLogger.ts, skills/ (6 ferdigheter: kostnadsanalyse, tilstandsrapport, leverandøroppdagelse, kvoteadministrasjon, smart ruting, oversikt over funksjoner) |
acp/ |
Agent-Control-Protocol: index.ts, manager.ts, registry.ts |
api/ |
Interne API-hjelpefunksjoner: requireManagementAuth.ts, requireCliToolsAuth.ts, errorResponse.ts |
auth/ |
managementPassword.ts (tilbakestilling av passord / hashing) |
batches/ |
Tjeneste for OpenAI Batches API (service.ts) |
catalog/ |
Synkronisering av OpenRouter-katalogen (openrouterCatalog.ts) |
cloudAgent/ |
Register for skyagenter: api.ts, baseAgent.ts, db.ts, index.ts, registry.ts, types.ts, agents/{codex, devin, jules}.ts |
combos/ |
Hjelpefunksjoner for oppslag av kombinasjoner |
compliance/ |
Revisjon + leverandørrevisjon: index.ts, providerAudit.ts |
config/ |
Koblingskode for kjøretidskonfigurasjon |
db/ |
SQLite-domenemoduler (se §3.2.1) |
display/ |
Hjelpefunksjoner for brukergrensesnitt/visning som brukes av API-svar |
embeddings/ |
Register for embedding-tjenester |
env/ |
Innlasting + introspeksjon av miljøvariabler |
evals/ |
Kjøretidsmiljø for evalueringer |
guardrails/ |
piiMasker.ts, promptInjection.ts, visionBridge.ts, visionBridgeHelpers.ts, registry.ts, base.ts |
jobs/ |
Bakgrunnsjobber (autoUpdate.ts, …) |
memory/ |
Vedvarende minne: store.ts, cache.ts, retrieval.ts, summarization.ts, extraction.ts, injection.ts, qdrant.ts, settings.ts, verify.ts, schemas.ts, types.ts |
monitoring/ |
observability.ts |
oauth/ |
OAuth-/importmoduler for leverandører (22): agy, antigravity, claude, cline, codebuddy-cn, codex, cursor, devin-desktop, ghe-copilot, github, gitlab-duo, grok-cli-oauth, grok-cli, kilocode, kimi-coding, kiro, openference, qoder, trae, xai-oauth, zed-hosted, zed, samt services/, utils/ og constants/oauth.ts |
plugins/ |
Programtilleggsinnlaster (index.ts) |
promptCache/ |
prefixAnalyzer.ts, index.ts |
providerModels/ |
Administrert livssyklus for modeller: modelDiscovery.ts, managedModelImport.ts, managedAvailableModels.ts, cursorAgent.ts |
providers/ |
Hjelpefunksjoner for leverandører: catalog.ts, validation.ts, imageValidation.ts, claudeExtraUsage.ts, codexConnectionDefaults.ts, codexFastTier.ts, webCookieAuth.ts, managedAvailableModels.ts, requestDefaults.ts |
resilience/ |
settings.ts — innstillinger for kretsbryter, nedkjølingsperiode og låsing |
runtime/ |
Oppdagelse av kjøretidsfunksjoner |
search/ |
executeWebSearch.ts |
services/ |
Rammeverk for innebygde tjenester: ServiceSupervisor.ts (generisk overvåker for underprosesser med operasjonslås, ringbuffer og tilstandskontroll), bootstrap.ts (registrering på prosessnivå og automatisk oppstart), registry.ts (verktøy → overvåker-kart), apiKey.ts (AES-256-GCM-nøkkellager), modelSync.ts (periodisk modellsynkronisering), ringBuffer.ts (5 MB sirkulær loggbuffer), healthCheck.ts (HTTP-tilstandssjekk), types.ts, embedWsProxy.ts (WebSocket-proxy), installers/{ninerouter,cliproxy}.ts. Se docs/frameworks/EMBEDDED-SERVICES.md |
agentSkills/ |
Katalog + generator for agentferdigheter: catalog.ts (getCatalog/getSkillById/filterCatalog/computeCoverage), generator.ts (generateAgentSkills → skriver skills/{id}/SKILL.md), openapiParser.ts (henter REST-endepunkter fra OpenAPI-spesifikasjonen), cliRegistryParser.ts (henter CLI-underkommandoer fra bin/cli-registry), schemas.ts (Zod: AgentSkillSchema, SkillCoverageSchema, ListQuerySchema, GenerateBodySchema), types.ts (AgentSkill, SkillCoverage, SkillMarkdown, GeneratorReport). Brukes av REST-ruter (/api/agent-skills/*), MCP-verktøy (omniroute_agent_skills_*) og A2A-ferdigheten list-capabilities. Se AGENT-SKILLS.md. |
skills/ |
Rammeverk for ferdigheter: registry.ts, executor.ts, interception.ts, injection.ts, sandbox.ts, custom.ts, hybrid.ts, builtins.ts, a2a.ts, providerSettings.ts, schemas.ts, skillssh.ts, types.ts, samt builtin/browser.ts |
spend/ |
batchWriter.ts (buffer for utsatt skriving) |
sync/ |
bundle.ts, tokens.ts (Cloud Sync) |
system/ |
Hjelpefunksjoner på systemnivå |
translator/ |
Koblingskode for oversetter på toppnivå (delegerer til open-sse/translator/) |
usage/ |
Bruksregnskap: costCalculator.ts, tokenAccounting.ts, usageHistory.ts, aggregateHistory.ts, usageStats.ts, callLogs.ts, callLogArtifacts.ts, fetcher.ts, providerLimits.ts, migrations.ts |
versionManager/ |
Automatisk oppdatering + versjonsmanifest |
ws/ |
WebSocket-bro |
zed-oauth/ |
OAuth-flyt for Zed-redigeringsprogrammet |
Filer på toppnivå i src/lib/:
- Den gamle barrel-filen
localDb.tsble fjernet — konsumenter importerer spesifikkesrc/lib/db/*-moduler direkte. proxyHealth.ts,proxyLogger.ts,tokenHealthCheck.ts,localHealthCheck.tsapiBridgeServer.ts,cacheLayer.ts,semanticCache.ts,settingsCache.tscloudSync.ts,initCloudSync.tscloudflaredTunnel.ts,ngrokTunnel.ts,tailscaleTunnel.tsconsoleInterceptor.ts,container.ts,gracefulShutdown.ts,idempotencyLayer.tsipUtils.ts,logEnv.ts,logPayloads.ts,logRotation.tsmodelAliasSeed.ts,modelCapabilities.ts,modelMetadataRegistry.ts,modelsDevSync.tspiiSanitizer.ts,pricingSync.tsapiKeyExposure.ts,cacheControlSettings.ts,dataPaths.ts,toolPolicy.tstranslatorEvents.ts,usageDb.ts,usageAnalytics.ts,webhookDispatcher.ts
3.2.1 src/lib/db/
Singleton SQLite-database (getDbInstance() i core.ts, WAL-journalføring).
Skriv aldri rå SQL i ruter eller handlere — gå gjennom disse modulene.
Domenemoduler (hver av dem eier én eller flere tabeller): apiKeys.ts, backup.ts,
batches.ts, cleanup.ts, cliToolState.ts, combos.ts,
commandCodeAuth.ts, compression.ts, compressionAnalytics.ts,
compressionCacheStats.ts, compressionCombos.ts, compressionScheduler.ts,
contextHandoffs.ts, core.ts, creditBalance.ts, databaseSettings.ts,
detailedLogs.ts, domainState.ts, encryption.ts, evals.ts, files.ts,
healthCheck.ts, jsonMigration.ts, migrationRunner.ts,
modelComboMappings.ts, models.ts, oneproxy.ts, prompts.ts,
providers.ts, providerLimits.ts, proxies.ts, quotaSnapshots.ts,
readCache.ts, reasoningCache.ts, registeredKeys.ts, secrets.ts,
sessionAccountAffinity.ts, settings.ts, stateReset.ts, stats.ts,
syncTokens.ts, tierConfig.ts, upstreamProxy.ts, versionManager.ts,
webhooks.ts.
migrations/ inneholder 168 versjonerte .sql-filer (idempotente, transaksjonelle) og
kjøres av migrationRunner.ts ved oppstart.
Tabeller opprettet på tvers av migreringene (totalt 123):
a, account_key_limits, api_keys, batches, call_logs,
combo_adaptation_state, combos, command_code_auth_sessions,
compression_analytics, compression_cache_stats,
compression_combo_assignments, compression_combos, context_handoffs,
daily_usage_summary, db_meta, domain_budgets, domain_circuit_breakers,
domain_cost_history, domain_fallback_chains, domain_lockout_state,
eval_cases, eval_runs, eval_suites, files, hourly_usage_summary,
key_value, mcp_tool_audit, memories, model_combo_mappings,
provider_connections, provider_key_limits, provider_nodes,
proxy_assignments, proxy_logs, proxy_registry, quota_snapshots,
reasoning_cache, registered_keys, request_detail_logs,
routing_decisions, semantic_cache, session_account_affinity,
skill_executions, skills, sync_tokens, tier_assignments,
tier_config, upstream_proxy_config, usage_history, version_manager,
webhooks (pluss virtuelle FTS5-tabeller for minnesøk).
3.3 src/domain/ — Domenelag
Ren forretningslogikk, ingen I/O. Importeres av ruter og handlere.
| Fil | Formål |
|---|---|
policyEngine.ts |
Overordnet policyresolver |
fallbackPolicy.ts |
Beslutningstre for reservealternativer |
costRules.ts |
Regler for kostnadsberegning |
lockoutPolicy.ts |
Beslutninger om modellutestenging |
tagRouter.ts |
Taggbasert ruting |
comboResolver.ts |
Kombinasjonsoppløsning fra forespørsel → målliste |
connectionModelRules.ts |
Modellfiltre per tilkobling |
modelAvailability.ts |
Kontroll av modelltilgjengelighet |
degradation.ts |
Overganger til redusert modus |
providerExpiration.ts |
Oppdagelse av utløpt konto/nøkkel |
quotaCache.ts |
Bufrede kvotebeslutninger |
responses.ts, omnirouteResponseMeta.ts |
Hjelpefunksjoner for responsformat |
configAudit.ts |
Revisjon av konfigurasjonsendringer |
assessment/ |
Modellvurdering (i henhold til RFC, delvis implementert) |
types.ts |
Delte domenetyper |
3.4 src/server/ — Kun for server
Kan ikke importeres fra klientkomponenter.
server/
├── auth/loginGuard.ts
├── authz/
│ ├── classify.ts Klassifiserer ruter som offentlige eller administrasjonsruter
│ ├── assertAuth.ts Hjelpefunksjon for validering
│ ├── context.ts Autorisasjonskontekst per forespørsel
│ ├── headers.ts
│ ├── pipeline.ts Autorisasjonskjede
│ ├── policies/ Konkrete policyer
│ └── types.ts
└── cors/origins.ts Tillatelsesliste for CORS-opprinnelser
3.5 src/shared/ — Trygt å dele
Delt inn i fokuserte undermapper:
constants/—providers.ts(Zod-validert leverandørkatalog),models.ts,modelSpecs.ts,modelCompat.ts,pricing.ts,cliTools.ts,cliCompatProviders.ts,routingStrategies.ts,comboConfigMode.ts,headers.ts,upstreamHeaders.ts(blokkeringsliste),mcpScopes.ts,errorCodes.ts,publicApiRoutes.ts,batch.ts,batchEndpoints.ts,bodySize.ts,colors.ts,appConfig.ts,config.ts,sidebarVisibility.ts,visionBridgeDefaults.ts.validation/—schemas.ts(~80 Zod-skjemaer),compressionConfigSchemas.ts,providerSchema.ts,settingsSchemas.ts,helpers.ts.contracts/— offentlige API-kontrakter publisert på npm.types/— delte TS-typer.utils/—circuitBreaker.ts,apiAuth.ts,apiKey.ts,apiKeyPolicy.ts,api.ts,classify429.ts,cliCompat.ts,clipboard.ts,cloud.ts,cn.ts,cors.ts,featureFlags.ts,fetchTimeout.ts,formatting.ts,inputSanitizer.ts,logger.ts,machine.ts,machineId.ts,maskEmail.ts,modelCatalogSearch.ts,nodeRuntimeSupport.ts,parseApiKeys.ts,providerHints.ts,providerModelAliases.ts,rateLimiter.ts,releaseNotes.ts,a11yAudit.ts, samt kontrollpanel-hooks/-komponenter underservices/,network/,middleware/,schemas/,hooks/,components/.
4. open-sse/ — Arbeidsområde for strømmemotoren
Separat npm-arbeidsområde publisert som @omniroute/open-sse. Håndterer behandling av
forespørsler, eksekverere, oversettere, tjenester, transformatoren og MCP-serveren.
open-sse/
├── index.ts Offentlige eksporter
├── package.json Arbeidsområdemanifest
├── tsconfig.json
├── types.d.ts
├── config/ Leverandørregistre, headerprofiler, identitet, …
├── handlers/ Forespørselshåndterere (chat, embeddings, lyd, bilde, …)
├── executors/ 108 leverandørspesifikke HTTP-eksekverere
├── translator/ Formatkonvertering (OpenAI ↔ Claude ↔ Gemini ↔ Cursor ↔ Kiro)
├── transformer/ Strømtransformator for Responses API ↔ Chat Completions
├── services/ Over 80 tjenestemoduler (kombinasjoner, reserve, kvoter, identitet, …)
├── utils/ Strømmehjelpere, TLS-klient, AWS SigV4, proxyhenting, …
└── mcp-server/ MCP-server (3 transporter, 33 omfang, 110 verktøy)
4.1 open-sse/handlers/
| Håndterer | Formål |
|---|---|
chatCore.ts |
Hovedflyt for chat (hurtigbuffer, hastighetsbegrensning, kombinasjonsruting, videresending til eksekverer) |
responsesHandler.ts |
Inngangspunkt for OpenAI Responses API |
embeddings.ts |
Embeddings |
imageGeneration.ts |
Bildegenerering |
audioSpeech.ts |
Tekst-til-tale |
audioTranscription.ts |
Tale-til-tekst |
videoGeneration.ts |
Videogenerering |
musicGeneration.ts |
Musikkgenerering |
rerank.ts |
Omrangering |
moderations.ts |
Moderering |
search.ts |
Nettsøk |
sseParser.ts |
Parser for SSE-hendelser |
usageExtractor.ts |
Trekker ut antall tokener fra oppstrømsstrømmer |
responseSanitizer.ts |
Fjerner leverandørspesifikk støy |
responseTranslator.ts |
Kobling mellom leverandørresponsen og oversetterlaget |
4.2 open-sse/executors/
108 leverandøreksekverere, som alle utvider BaseExecutor (base.ts):
antigravity, azure-openai, blackbox-web, cliproxyapi,
chatgpt-web-codex, cloudflare-ai, codex, commandCode, cursor, default, devin-cli,
muse-spark-web, nlpcloud, opencode, perplexity-web, petals,
pollinations, qoder, vertex, devin-desktop, samt claudeIdentity.ts
(delt identitetshjelper) og index.ts (register).
Merk: Leverandører som ikke er oppført her, betjenes av
default.tsved hjelp av den generiske OpenAI-kompatible eksekvereren. Den fullstendige leverandørkatalogen (355 leverandører) ligger isrc/shared/constants/providers.ts.
4.3 open-sse/translator/
Nav-og-eike-oversettelse (OpenAI er navet).
- 9 forespørselsoversettere (
translator/request/):antigravity-to-openai,claude-to-gemini,claude-to-openai,gemini-to-openai,openai-responses,openai-to-claude,openai-to-cursor,openai-to-gemini,openai-to-kiro. - 9 responsoversettere (
translator/response/):claude-to-openai,cursor-to-openai,gemini-to-claude,gemini-to-openai,kiro-to-openai,openai-responses,openai-to-antigravity,openai-to-claude. - 9 hjelpere (
translator/helpers/):claudeHelper,geminiHelper,geminiToolsSanitizer,maxTokensHelper,openaiHelper,responsesApiHelper,schemaCoercion,toolCallHelper, samt hjelpetester. - Bildehjelpere (
translator/image/sizeMapper.ts). - Toppnivå:
bootstrap.ts,formats.ts,registry.ts,index.ts.
4.4 open-sse/transformer/
responsesTransformer.ts—TransformStream-basert konverterer for Responses API ↔ Chat Completions (brukes av oppsamlingsrutenresponses/).
4.5 open-sse/services/
Høydepunkter (fullstendig liste under open-sse/services/):
| Område | Filer |
|---|---|
| Kombinasjonsruting | combo.ts (19 strategier), comboConfig.ts, comboMetrics.ts, comboManifestMetrics.ts, comboAgentMiddleware.ts |
| Automatisk kombinasjonsmotor | autoCombo/ — engine.ts, scoring.ts, taskFitness.ts, virtualFactory.ts, modePacks.ts, autoPrefix.ts, persistence.ts, providerDiversity.ts, providerRegistryAccessor.ts, routerStrategy.ts, selfHealing.ts, index.ts |
| Robusthet | accountFallback.ts (nedkjøling + sperring), errorClassifier.ts, emergencyFallback.ts, rateLimitManager.ts, rateLimitSemaphore.ts, accountSemaphore.ts, accountSelector.ts |
| Kvoter | quotaMonitor.ts, quotaPreflight.ts, bailianQuotaFetcher.ts, codexQuotaFetcher.ts, deepseekQuotaFetcher.ts, openrouterQuotaFetcher.ts, openrouterFreeWindow.ts, crofUsageFetcher.ts, antigravityCredits.ts |
| Hurtigbufring | reasoningCache.ts, searchCache.ts, signatureCache.ts, requestDedup.ts |
| Intelligent ruting | intentClassifier.ts, taskAwareRouter.ts, backgroundTaskDetector.ts, volumeDetector.ts, wildcardRouter.ts, workflowFSM.ts, specificityDetector.ts, specificityRules.ts, specificityTypes.ts |
| Modellhåndtering | modelCapabilities.ts, modelDeprecation.ts, modelFamilyFallback.ts, modelStrip.ts, model.ts, provider.ts, providerRequestDefaults.ts, providerCostData.ts, payloadRules.ts |
| Komprimering | compression/ — fullstendig kobling av komprimeringsmotoren |
| Token + økt | tokenRefresh.ts, sessionManager.ts, apiKeyRotator.ts, contextManager.ts, contextHandoff.ts, systemPrompt.ts, roleNormalizer.ts, responsesInputSanitizer.ts, toolSchemaSanitizer.ts, toolLimitDetector.ts, thinkingBudget.ts |
| Nivå / manifest | tierResolver.ts, tierConfig.ts, tierDefaults.json, tierTypes.ts, manifestAdapter.ts |
| IP / nettverk | ipFilter.ts, webSearchFallback.ts |
| Bunker | batchProcessor.ts |
| Bruk | usage.ts |
4.6 open-sse/mcp-server/
- 110 unike verktøy koblet opp i
server.ts(45 kanoniske ischemas/tools.ts+ minne-, ferdighets-, GitHub-ferdighets-, pulje-, spillifiserings-, programtilleggs-, Notion-, Obsidian-, lokalkorpus- og komprimeringsmoduler — unionen telles avcountUniqueMcpTools). - 3 transporter: stdio, HTTP Streamable, SSE.
- 33 virkeområder håndheves under kjøring — grunnlisten finnes i
src/shared/constants/mcpScopes.ts, og det fullstendige settet er unionen av virkeområdene som deklareres av hver verktøymodul. - Revisjonstabell:
mcp_tool_audit(fylles ut avaudit.ts). - Filer:
server.ts,index.ts,httpTransport.ts,audit.ts,scopeEnforcement.ts,runtimeHeartbeat.ts,descriptionCompressor.ts,schemas/{tools, a2a, audit, index}.ts,tools/{advancedTools, compressionTools, memoryTools, skillTools}.ts, samt tester under__tests__/. - Se MCP-SERVER.md for den fullstendige verktøykatalogen.
4.7 open-sse/config/
Leverandørregistre (providerRegistry.ts, providerModels.ts,
providerHeaderProfiles.ts), modellregistre for hvert format (audioRegistry.ts,
embeddingRegistry.ts, imageRegistry.ts, moderationRegistry.ts,
musicRegistry.ts, rerankRegistry.ts, searchRegistry.ts, videoRegistry.ts),
identitetshjelpere (codexIdentity.ts, codexInstructions.ts,
anthropicHeaders.ts, antigravityUpstream.ts, antigravityModelAliases.ts,
cliFingerprints.ts, toolCloaking.ts, defaultThinkingSignature.ts),
legitimasjonshjelpere (credentialLoader.ts, codexClient.ts) og skyadaptere
(azureAi.ts, bedrock.ts, datarobot.ts, glmProvider.ts,
maritalk.ts, oci.ts, petals.ts, runway.ts, sap.ts, watsonx.ts,
ollamaModels.ts, errorConfig.ts, constants.ts, registryUtils.ts).
4.8 open-sse/utils/
Strømmeprimitiver og leverandørhjelpere: stream.ts, streamHandler.ts,
streamHelpers.ts, streamPayloadCollector.ts, streamReadiness.ts,
sseHeartbeat.ts, proxyFetch.ts, proxyDispatcher.ts, tlsClient.ts,
networkProxy.ts, awsSigV4.ts, cacheControlPolicy.ts,
cursorChecksum.ts, cursorAgentProtobuf.ts, cursorVersionDetector.ts,
comfyuiClient.ts, kieTask.ts, bypassHandler.ts, aiSdkCompat.ts,
thinkTagParser.ts, urlSanitize.ts, usageTracking.ts, requestLogger.ts,
progressTracker.ts, cors.ts, error.ts, logger.ts, sleep.ts,
ollamaTransform.ts.
5. electron/ — Skrivebordsinnpakning
electron/
├── main.js Electron-hovedprosess
├── preload.js Forhåndslastingsbro (contextIsolation aktivert)
├── types.d.ts
├── package.json electron-builder-konfigurasjon, versjon 3.8.51
├── README.md
├── assets/ Byggeressurser (ikoner, rettigheter, …)
├── node_modules/ Dedikert node_modules (better-sqlite3, electron-updater)
└── dist-electron/ Byggresultat (ikke sjekket inn)
Fem npm-skript i roten av arbeidsområdet: electron:dev, electron:build,
electron:build:{win,mac,linux}, electron:smoke:packaged. Automatisk oppdatering skjer via
electron-updater, som peker til utgivelsesfeeden på GitHub.
6. bin/ — CLI
bin/
├── omniroute.mjs Hovedinngangspunkt for CLI (Node ESM)
├── reset-password.mjs Tilbakestill administrasjonspassordet fra CLI
├── mcp-server.mjs MCP-serverstarter (stdio)
├── nodeRuntimeSupport.mjs Kontroll av Node-versjon
└── cli/
├── program.mjs Bygger for Commander-programmet
├── runtime.mjs withRuntime-hjelper (server først/database som reserve)
├── output.mjs Utdataformaterere (json/jsonl/table/csv)
├── i18n.mjs t()-hjelper med nasjonale innstillinger
├── api.mjs Hjelper for API-henting
├── data-dir.mjs
├── encryption.mjs
├── sqlite.mjs
└── commands/
├── registry.mjs Kommandoregistrering
├── setup.mjs
├── doctor.mjs
├── providers.mjs
└── ... (én fil per kommando/gruppe)
To binærfiler eksponeres i package.json → bin:
omniroute→bin/omniroute.mjsomniroute-reset-password→bin/reset-password.mjs
7. tests/
| Mappe | Type |
|---|---|
tests/unit/ |
Enhetstester via Nodes innebygde testkjører (1821 filer samt undermappene api/, auth/, authz/) |
tests/integration/ |
Tester på tvers av moduler og databasetilstander |
tests/e2e/ |
Playwright-tester av brukergrensesnittet |
tests/e2e/protocol-clients.test.ts |
E2E for MCP/A2A-protokoller |
tests/translator/ |
Oversetterspesifikke tester |
tests/security/ |
Sikkerhetsregresjoner |
tests/load/ |
Belastnings-/stresstester |
tests/golden-set/ |
Referanseresultater for oversetterregresjoner |
tests/helpers/, tests/fixtures/, tests/manual/ |
Støtte |
Vanlige kommandoer:
| Kommando | Hva den kjører |
|---|---|
npm run test:unit |
Alle tests/unit/*.test.ts via Nodes testkjører (10 samtidige kjøringer) |
npm run test:vitest |
Vitest-testpakken (MCP, autoCombo, hurtigbuffer) |
npm run test:e2e |
Playwright-testpakken for brukergrensesnittet |
npm run test:protocols:e2e |
E2E for MCP- og A2A-protokollene |
npm run test:coverage |
Dekningskrav (≥60 % linjer/uttrykk/funksjoner/grener) |
node --import tsx/esm --test tests/unit/<file>.test.ts |
Kjøring av én enkelt fil |
8. scripts/
Organisert i 6 undermapper etter formål.
scripts/build/—build-next-isolated.mjs,prepublish.ts,prepare-electron-standalone.mjs,pack-artifact-policy.ts,validate-pack-artifact.ts,postinstall.mjs,postinstallSupport.mjs,uninstall.mjs,bootstrap-env.mjs,runtime-env.mjs,native-binary-compat.mjs.scripts/dev/—run-next.mjs,run-next-playwright.mjs,run-standalone.mjs,standalone-server-ws.mjs,responses-ws-proxy.mjs,v1-ws-bridge.mjs,smoke-electron-packaged.mjs,run-playwright-tests.mjs,run-ecosystem-tests.mjs,run-protocol-clients-tests.mjs,sync-env.mjs,healthcheck.mjs,system-info.mjs.scripts/check/—check-cycles.mjs,check-docs-sync.mjs,check-docs-counts-sync.mjs,check-env-doc-sync.mjs,check-deprecated-versions.mjs,check-route-validation.mjs,check-t11-any-budget.mjs,check-pr-test-policy.mjs,check-supported-node-runtime.ts,test-report-summary.mjs.scripts/docs/—generate-docs-index.mjs,gen-provider-reference.ts.scripts/i18n/—generate-multilang.mjs,run-visual-qa.mjs,generate-qa-checklist.mjs,apply-priority-overrides.mjs,validate_translation.py,check_translations.py,i18n_autotranslate.py,untranslatable-keys.json.scripts/ad-hoc/—cursor-tap.cjs,sync-cursor-models.mjs,migrate-env.mjs,dbsetup.js.
9. Forespørselspipeline (sammendrag)
Klientforespørsel
→ /v1/chat/completions (route.ts)
CORS-preflightkontroll
Zod-validering (chatCompletionsSchema i shared/validation/schemas.ts)
Autentisering (extractApiKey + isValidApiKey ELLER requireManagementAuth)
Regelmotor (src/server/authz/pipeline.ts)
Sikkerhetsmekanismer (PII-maskering, promptinjeksjon, vision-bro)
→ handleChatCore() (open-sse/handlers/chatCore.ts)
Hurtigbufferkontroll (semantisk hurtigbuffer + lesehurtigbuffer)
Hastighetsbegrensning (rateLimitManager, accountSemaphore)
Kombinasjonsruting (hvis modellen løses til en kombinasjon)
comboResolver → løkke per mål → handleSingleModel()
translateRequest() (open-sse/translator/request/*)
getExecutor(providerId).execute() (open-sse/executors/*)
hent fra oppstrøms → nytt forsøk/eksponentiell venting via accountFallback
translateResponse() (open-sse/translator/response/*)
SSE-strøm ELLER JSON-respons
Hvis Responses API: TransformStream via open-sse/transformer/responsesTransformer.ts
→ Samsvarsrevisjon (src/lib/compliance/)
→ Respons til klienten
Kjøretidstilstand for robusthet (tre mekanismer)
| Mekanisme | Omfang | Hvor |
|---|---|---|
| Kretsbryter for leverandør | Hele leverandøren | src/shared/utils/circuitBreaker.ts, lagret i domain_circuit_breakers |
| Nedkjølingsperiode for tilkobling | Én konto/nøkkel | markAccountUnavailable() i src/sse/services/auth.ts; brukes av accountFallback.checkFallbackError() |
| Modellutestengelse | Leverandør + tilkobling + modell | open-sse/services/accountFallback.ts, lagret i domain_lockout_state |
Se RESILIENCE_GUIDE.md og den dedikerte delen i CLAUDE.md.
10. Slik bidrar du
Legg til en ny leverandør
- Registrer den i
src/shared/constants/providers.ts(Zod-validert ved innlasting). - Legg til en eksekverer i
open-sse/executors/hvis egendefinert logikk er nødvendig (utvidBaseExecutor). - Legg til en oversetter i
open-sse/translator/hvis den ikke bruker OpenAI-formatet. - Hvis den er OAuth-basert, legg til konfigurasjon under
src/lib/oauth/providers/ogsrc/lib/oauth/services/. - Registrer modeller i
open-sse/config/providerRegistry.ts(eller det formatspesifikke registeret underopen-sse/config/). - Skriv tester under
tests/unit/.
Legg til en ny API-rute
- Opprett
src/app/api/your-route/route.ts. - Følg mønsteret: CORS → Zod-validering av forespørselskroppen → autentisering → delegering til håndterer.
- Ved en ny forespørselsstruktur: legg til Zod-skjemaet i
src/shared/validation/schemas.ts. - Hvis den kun er for administrasjon: legg til banen i
src/shared/constants/publicApiRoutes.ts(blokkeringsliste for den offentlige API-overflaten). - Legg til tester under
tests/unit/. - Oppdater
docs/reference/API_REFERENCE.mdogdocs/openapi.yaml.
Legg til en ny DB-modul
- Opprett
src/lib/db/yourModule.tsog importergetDbInstance()fra./core.ts. - Eksporter CRUD-funksjoner for domenet ditt.
- Ved nye tabeller: legg til en migrering under
src/lib/db/migrations/, nummerert sekvensielt, idempotent og transaksjonell. - Importører bruker direkte import fra
@/lib/db/yourModule(ingen samleeksport — det gamle reeksportlagetlocalDb.tsble fjernet). - Legg til tester under
tests/unit/.
Legg til et nytt MCP-verktøy
- Legg til verktøydefinisjonen under
open-sse/mcp-server/tools/(eller utvidopen-sse/mcp-server/schemas/tools.ts). - Tilordne passende omfang i
src/shared/constants/mcpScopes.ts. - Registrer verktøyet i
open-sse/mcp-server/server.ts. - Legg til tester under
open-sse/mcp-server/__tests__/. - Oppdater MCP-SERVER.md.
Legg til en ny A2A-ferdighet
Se A2A-SERVER.md § Legge til en ny ferdighet. Ferdigheter ligger i
src/lib/a2a/skills/ og registreres gjennom A2A-oppgavebehandleren.
11. Konvensjoner
- Kodestil: innrykk med 2 mellomrom, doble anførselstegn, linjebredde på 100 tegn, semikolon,
etterfølgende komma i
es5-stil — håndheves av Prettier vialint-staged. - Importer: eksterne → interne (
@/,@omniroute/open-sse) → relative. - Navngivning: filer bruker
camelCaseellerkebab-case, komponenter brukerPascalCase, konstanter brukerUPPER_SNAKE. - ESLint:
no-eval,no-implied-eval,no-new-func=erroroveralt;no-explicit-any=warniopen-sse/ogtests/, ellerserror. - TypeScript:
strict: false(eldre praksis). Foretrekk eksplisitte typer fremfor inferens ved grenser mellom moduler. - Database: skriv aldri rå SQL i ruter eller håndterere — gå alltid gjennom
modulene i
src/lib/db/. Bruk aldri samleimport — bruk spesifikkesrc/lib/db/*-moduler direkte. - Typing av DB-entiteter (#3512): En funksjon som skriver eller leser radstrukturen
til en DB-tabell, skal ta imot/returnere et navngitt TS-grensesnitt som gjenspeiler
tabellens kolonner 1:1, ikke
anyeller en innebygd anonym type på kallstedet. Plasser grensesnittet ved siden av funksjonen (f.eks.export interface UsageEntryisrc/lib/usage/usageHistory.tsoversaveRequestUsage), behold enkeltfelt som valgfrie/nullbare når ulike skrivere fyller ut raden trinnvis, og foretrekkunknownfremforanyfor et felt hvis struktur varierer mellom kallere (dokumentert på feltet, f.eks. atUsageEntry.tokensgodtar både rå leverandørstrukturert bruk og den normaliserte strukturen). Når antalletanyi en fil på denne måten når null, legger du den til i tillatelseslisten forcheck:any-budget:t11(scripts/check/check-t11-any-budget.mjs,maxAny: 0), slik at dette ikke kan gå tilbake. Dette er en konvensjon for den første delen — den bredere oppryddingen av «ingen anonymany» utføres iterativt i resten av kodebasen. - Feil: bruk try/catch med spesifikke feiltyper, og logg med pino-kontekst. Aldri ignorer feil i SSE-strømmer uten varsel; bruk avbruddssignaler til opprydding.
- Sikkerhet: bruk aldri
eval()/new Function()/ implisitt eval. Valider alle inndata med Zod. Krypter legitimasjon ved lagring (AES-256-GCM). Hold blokkeringslisten isrc/shared/constants/upstreamHeaders.tssynkronisert med laget for rensing/validering. - Commits: Conventional Commits —
feat(scope): subject. Tillatte omfang:db,sse,oauth,dashboard,api,cli,docker,ci,mcp,a2a,memory,skills. - Grener: prefiksene
feat/,fix/,refactor/,docs/,test/,chore/. Aldri commit direkte tilmain. - Husky: før commit kjøres
lint-staged+check:docs-sync+check:any-budget:t11; før push kjørescheck:any-budget:t11+check:tracked-artifacts(raske kontrollporter; utelatertest:unit).
12. Ufravikelige regler (fra CLAUDE.md)
- Aldri legg inn hemmeligheter eller påloggingsopplysninger i versjonskontrollen.
- Aldri bruk samleimporter — bruk spesifikke
src/lib/db/*-moduler direkte. - Aldri bruk
eval()/new Function()/ implisitt eval. - Aldri legg inn endringer direkte i
main. - Aldri skriv rå SQL i ruter — gå alltid gjennom modulene i
src/lib/db/. - Aldri ignorer feil i SSE-strømmer uten varsel.
- Valider alltid inndata med Zod-skjemaer.
- Inkluder alltid tester når produksjonskode endres.
- Testdekningen må være ≥ 60 % (setninger, linjer, funksjoner, grener).
13. Se også
- ARCHITECTURE.md — overordnet arkitektur og modulenes ansvarsområder.
- API_REFERENCE.md — referanse for offentlig API og administrasjons-API.
- FEATURES.md — funksjonsmatrise og versjonshøydepunkter.
- RESILIENCE_GUIDE.md — detaljert gjennomgang av kretsbryter, nedkjøling og sperring.
- AUTO-COMBO.md — poengberegning og strategier for Auto Combo.
- MCP-SERVER.md — komplett katalog over MCP-verktøy og transportmekanismer.
- A2A-SERVER.md — ferdigheter og oppdagelse i A2A-protokollen.
- COMPRESSION_GUIDE.md — RTK- og Caveman-komprimering.
- CLI-TOOLS.md — CLI-integrasjoner.
- ELECTRON_GUIDE.md (hvis den finnes), DOCKER_GUIDE.md, FLY_IO_DEPLOYMENT_GUIDE.md, VM_DEPLOYMENT_GUIDE.md, TERMUX_GUIDE.md, PWA_GUIDE.md — distribusjonsmål.
- TROUBLESHOOTING.md — vanlige driftsproblemer.
- CONTRIBUTING.md — arbeidsflyt for bidragsytere.
- CLAUDE.md — regler for Claude Code i kodebasen (den autoritative kilden for mange av konvensjonene ovenfor).
- AGENTS.md — mer detaljert arkitekturreferanse som brukes av agenter.