srvsh init

Self-hosted
control plane
for AI agents. .NET 10 · SQLite · Yours to run

An auditable agent runtime that lives on your machine, talks to the providers you choose, and persists everything to a local SQLite file. Five providers. MCP-native. Tamper-evident audit chain. No cloud. No telemetry. No surprises.

srvsh — repl
CONNECTED
22prj
Projects
14step
TurnLoop pipeline
5api
Providers
0tx
Outbound telemetry

Every prompt walks fourteen named steps.

Most agent runtimes are a while(notDone) loop nobody can reason about. SRVSH's TurnLoop is a deterministic, numbered pipeline. Every run — CLI, browser, Telegram, agent orchestrator — passes through the same fourteen stages. Each stage emits events. Each transition is auditable. You can stop the world at step 09 and know exactly what's happened.

Live trace — sample run cycling through pipeline

Three things most runtimes skip.

Auditable by construction

Every event — run start, tool call, model swap, vault unlock, policy violation — appends to a hash-linked SHA-256 chain in your local SQLite. Tamper-evident. Verifiable. You can prove what your agent did, when, and with what permission.

Audit chain

Gated, not optional

A two-layer security pipeline runs before any tool executes. PolicyEngine maps tools to risk tiers. ApprovalEngine asks the user when needed. AES-GCM vault for secrets. Approval decisions persist across restarts.

Policy + approval

Streaming-first, end to end

Provider APIs return IAsyncEnumerable<StreamDelta>. Events flow through SSE to the browser, through long-poll to Telegram, through stdout to the CLI — without a single buffering layer. What the model is saying, you see now.

SSE · async

Five providers. One key, if you want.

Bring whatever models you trust. Local Ollama for free runs. OpenRouter for one key across 300+ models. Anthropic, Gemini, or any OpenAI-compatible endpoint when you want first-party. Each provider is a single project implementing one interface — adding a new one is a weekend.

A
Anthropic
CLAUDE 3.5 / 4 / OPUS
G
Gemini
1.5 / 2.0 / 2.5
O
OpenRouter
300+ MODELS, 1 KEY
R
OpenAI-compat
LM STUDIO · GROQ
L
Ollama
LOCAL · NO KEY
+
Yours
IModelProvider

Talk where you already talk.

SRVSH ships with a channel abstraction. One agent, many surfaces — the same audit chain, the same memory, the same policy engine, whether the prompt arrives from your browser or your phone.

CLI REPL
LIVE
Web UI
LIVE
Telegram
LIVE
Discord
NEXT

Five commands. Zero hosted services.

Clone, set one env var, start two processes, open the browser. No Docker. No Kubernetes. No "create an account first." Your machine, your data, your model keys.

# 1 — clone git clone https://github.com/priceds/SRVSH.git && cd SRVSH # 2 — set one provider key (OpenRouter recommended: 300+ models, 1 key) $env:OPENROUTER_API_KEY = "sk-or-..." # 3 — start the API on localhost:5000 dotnet run --project src/SRVSH.Web.Api # 4 — start the React client (new terminal) cd src/SRVSH.Web.Client && npm install && npm run dev # 5 — open and pick a model open http://localhost:5173