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

Oder cargo install · build from source ↗

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