Onyx
Zero-knowledge trezor, jehož MCP server dá agentům používat tajemství, která nikdy neuvidí.
- →onyx:// reference → inject při běhu
- →výstup nástrojů bez tajemství
- →per-item AI tiers · Touch-ID gate
- Swift / SwiftUI
- MCP
- macOS Keychain
- Touch ID
- Node
Zero-knowledge trezor na tajemství s MCP serverem pro agenty: tajemství se injektují až při běhu a model je nikdy nedostane zpět (use-without-reveal), per-item AI tiers řídí, na co agent smí sáhnout, výstup nástrojů se scrubuje od uniklých tajemství a pod tím sedí kill-switch, Touch-ID gate a kompletní audit log. „Bezpečný control plane pro agenty“ konkrétně.
Problém
Agenti potřebují skutečné přístupové údaje, aby odvedli skutečnou práci — Stripe klíč na vrácení platby, GitHub token na otevření PR, connection string na dotaz do databáze. Jakmile některý z nich předáte modelu, ocitne se v kontextovém okně. Odtud se dostane do logů, vrátí se ve shrnutí, zapíše se do trace nebo ho o tři tahy později vytáhne prompt injection. Tajemství v kontextu je tajemství venku.
.env soubory a vkládání klíčů do promptů nerozlišují dvě úplně jiná práva: právo přístupový údaj použít a právo si ho přečíst. Agent to druhé skoro nikdy nepotřebuje. Potřebuje akci, kterou klíč odemyká, ne samotný klíč — jenže každé běžné nastavení mu dá obojí naráz.
Hrozbou není zlý model, ale plocha útoku: logy, trace, přepisy nástrojů, příliš ochotné shrnutí, které cituje vlastní prostředí. Každé z těch míst je tam, kde se může tajemství v plaintextu usadit. Onyx jsem postavil proto, abych z nich tu hodnotu odstranil.
Use-without-reveal
Onyx je zero-knowledge trezor, který sedí za MCP serverem. Agent zavolá nástroj jménem; MCP server vstříkne skutečné tajemství do odchozího požadavku až v okamžiku spuštění a vrátí jen výsledek. Model pracuje s referencí, nikdy s hodnotou — může použít přístupový údaj, který nikdy nesmí vidět.
Per-item AI tiery rozhodují, na co vůbec smí agent sáhnout. Tajemství může být agentům otevřené, schované za lidský dotyk, nebo pro model úplně neviditelné — nastavuje se to po jednotlivých položkách, ne na celý trezor, takže read-only klíč k analytice a heslo k produkční databázi nikdy nesdílejí stejný dosah škody.
Každá odpověď nástroje se cestou zpět pročistí. Než se výstup dostane k modelu, projde kontrolou na výskyt tajemství a začerní se, aby se přístupový údaj nevrátil do kontextu přes upovídanou API odpověď nebo chybovou hlášku. Pod tím vším leží control plane: kill-switch, který odřízne přístup naráz, Touch ID brána pro citlivé operace a kompletní audit log každého čtení — kdo, co, kdy a kterým nástrojem.
Stav
Onyx je v aktivním vývoji — architektura, kterou stavím, ne hotový produkt. Aplikace pro macOS je ve Swiftu/SwiftUI, strana otočená k agentům je Node MCP server. Zatím běží jen přes WireGuard, na mých vlastních strojích, bez uživatelů kromě mě.
Beru to jako funkční odpověď na otázku, kterou agentní ekosystém ještě nevyřešil: jak dát autonomnímu agentovi sílu přístupového údaje, aniž byste mu ten údaj dali? Jednotlivé díly — vstřikování ve stylu use-without-reveal, tiery po položkách, čištění výstupu, kill-switch, Touch ID, audit — jsou tvar té odpovědi, který kalím proti vlastním úlohám dřív, než bude mít smysl tvrdit cokoli širšího.