v0.1.17
Open Source
rust · stable
Linux · macOS · ARM64
„Etwas in deinem Terminal ist gerade aufgewacht."
Ein erweiterbarer Agent-Harness in Rust.
Eine statische Binary, kein Ballast. Ein LLM-Agenten-Loop mit Streaming, parallelem Tool-Dispatch und Compaction — als TUI, One-shot oder JSONL-RPC. Sicher by default.
Installieren in einer Zeile
$ curl -fsSL https://raw.githubusercontent.com/Vezir0013/sepp-mini/main/install.sh | sh
$ sepp --version # prüfen
Linux & macOS · x86_64 & ARM64 — inkl. Apple Silicon
agent-loop · live
live
$sepp -p "Refaktoriere die Auth-Middleware + Tests"
●sepp mini v0.1anthropic · sandbox: deny
⎿readsrc/auth/middleware.rs
⎿readsrc/auth/mod.rs
↳2 Tools parallel dispatched
▌Die Token-Validierung blockiert den Executor — ich ziehe sie in einen async Guard und schreibe Tests.
⎿editsrc/auth/middleware.rs +34 −12
⎿writetests/auth_guard.rs +58
⎿bashcargo test -p auth
↳net capability nicht gewährt — blockiert✓
✓14 Tests grün · Kontext kompaktiert · Session gespeichert
1
statische Binary
0
node_modules
ms
Cold-Start
4
Erweiterungs-Tiers
3
Modi, ein Kern
// Highlights
Ein Kern. Streng geschichtet. Erweiterbar bis zur OS-Grenze.
Cargo-Workspace aus kleinen Crates — untere Schichten importieren nie obere.
01 / Sandbox
Sandbox-by-default
Default ist deny. Erweiterungen deklarieren Capabilities (FsRead/FsWrite/Net/Env/Exec); der Kern parst sie zu einer Policy und erzwingt sie an der Grenze — Linux via Landlock, macOS via Seatbelt (sandbox_init), beide fail-closed — plus Environment-Scrubbing. Plattformen ohne Adapter fallen mit Warnung auf reines Env-Scrubbing zurück.
02 / Tiers
Vier Erweiterungs-Tiers
Resources (Skills, Prompts), Hooks (in-process Rhai), WASM-Plugins (memory-sandboxed, via wasmi) und MCP-Server (out-of-process, OS-sandboxed) — nach Macht und Isolation gestuft.
03 / Provider
Multi-Provider, ein Trait
Multi-Provider hinter einem Trait: Anthropic (Messages API), OpenAI-kompatibel inkl. lokaler Endpunkte (Ollama/vLLM) über OPENAI_BASE_URL, dedizierte Connector für z.ai/Zhipu-GLM und Moonshot AI/Kimi (Kimi K3, 1M Kontext) sowie MLX für lokale Apple-Silicon-Inferenz via LM Studio.
04 / Modi
Drei Modi, ein Kern
Interaktive TUI, One-shot (-p) für Skripte und Pipes, sowie JSONL-RPC (--rpc) zum Einbetten in andere Programme. stdout bleibt im RPC-Modus reiner Datenkanal.
05 / Sessions
Robuste Baum-Sessions
Baumstrukturiert mit Branching und Compaction, persistent als JSONL (Default) oder optional SQLite — Sessions fortsetzen, verzweigen, kompaktieren.
06 / Sub-Agenten
Native Sub-Agenten
Delegieren Teilaufgaben in isoliertem Kontext; nur das Ergebnis kehrt zurück — der Wurzel-Kontext bleibt schlank und billig.
// Erweiterbarkeit
Vier Tiers, nach Macht und Isolation gestuft.
Je mehr eine Erweiterung darf, desto stärker isoliert sie der Kern. Vom System-Prompt bis zum OS-sandboxed Subprozess.
tier 1
Resources
Skills → System-Prompt, Prompt-Templates → Slash-Commands, Themes. Reine Daten, kein Code.
~/.sepp/skills · ~/.sepp/prompts
tier 2
Hooks
In-process Rhai-Skripte, die den Agent-Loop unterbrechen und steuern können.
~/.sepp/hooks/*.rhai
tier 3
WASM
Capability-gegatete Plugins (jede Sprache → .wasm), memory-sandboxed via wasmi.
~/.sepp/plugins/*.wasm
tier 4
MCP
Out-of-process-Server als Tool-Quelle, OS-sandboxed mit deklarierten Capabilities.
settings.toml → [[mcp.servers]]
weniger Macht · mehr Isolationmehr Macht · OS-erzwungen
// Sicherheitsmodell
Default ist deny.
Eine Erweiterung bekommt nur die Rechte, die sie deklariert und der Mensch bestätigt — und der Kern erzwingt sie an der jeweiligen Grenze.
01
deny
Ohne Deklaration: keine Rechte. Kein Dateisystem, kein Netz, keine Secrets.
02
declare
Capabilities werden im Manifest deklariert und vom Menschen bestätigt.
03
enforce
Der Kern erzwingt die Policy an der OS-Grenze — fail-closed.
Erzwungen an jeder Grenze
▸
MCP / Subprozesse
OS-Sandbox via Landlock (Linux) bzw. Seatbelt/sandbox_init (macOS) + Environment-Scrubbing — keine geerbten API-Keys.
▸
WASM-Plugins
Host-Funktionen nur registriert, wenn die Policy sie erlaubt. Ohne Net nachweislich offline.
▸
Secrets
API-Keys kommen aus Env-Vars, werden nie geloggt oder persistiert; bash reicht sie nicht durch.
▸
Tool-Output
Immer getrunkt, bevor er ins Kontextfenster geht. Kein unkontrolliertes Wachstum.
~/.sepp/settings.toml
[[mcp.servers]]
name = "git"
command = ["uvx", "mcp-server-git"]
[mcp.servers.capabilities]
fs_read = ["./"]
fs_write = ["./"]
exec = ["git"]
→ Alles, was nicht deklariert ist, wird verweigert.
// Drei Modi
Ein Kern, drei Frontends.
Dieselbe Engine — interaktiv, als One-shot-Kommando oder als JSONL-RPC zum Einbetten.
Interaktiv. Sessions fortsetzen (-c) oder gezielt wieder aufnehmen (-r).
$ sepp # interaktive TUI
$ sepp -c # jüngste Session fortsetzen
$ sepp -r [id] # Session per ID-Präfix (ohne id: jüngste)
$ export ANTHROPIC_API_KEY=...
$ sepp -p "Fasse README.md zusammen"
$ sepp --provider openai -m gpt-4o-mini -p "..."
$ sepp --provider mlx -p "..." # LM Studio · http://localhost:1234/v1 · kein API-Key
$ export MOONSHOT_API_KEY=...
$ sepp -m kimi-k3 -p "..." # Provider aus dem Modell abgeleitet
# --provider anthropic (Default) | openai | local | zai | moonshot | mlx
$ echo '{"type":"prompt","text":"hallo"}' | sepp --rpc
OPENAI_BASE_URL=http://localhost:11434/v1 \
sepp --provider local -m llama3 -p "..."
Umgebung
ANTHROPIC_API_KEYAnthropic-Live-Aufrufe
OPENAI_API_KEYOpenAI (optional bei lokalen Servern)
OPENAI_BASE_URLOpenAI-kompatible base_url (Ollama/vLLM/local)
ZAI_API_KEYz.ai/Zhipu-GLM (Pflicht für --provider zai; Format id.secret)
ZAI_BASE_URLz.ai base_url überschreiben (Default https://api.z.ai/api/paas/v4)
MOONSHOT_API_KEYMoonshot AI/Kimi (Pflicht für --provider moonshot)
MOONSHOT_BASE_URLMoonshot base_url überschreiben (Default https://api.moonshot.ai/v1)
SEPP_PROVIDERDefault-Provider, wenn --provider fehlt
SEPP_THINKDefault-Reasoning (on/off), wenn --think/--no-think fehlt
RUST_LOGLog-Level (Logs gehen nach stderr)
„Etwas in deinem Terminal wartet."
In einer Zeile installiert.
$curl -fsSL …/install.sh | sh