󰈔 ~ projects seval.md
s
seval v0.1.3

— offensive-security assistant in your terminal

An AI offensive-security assistant that runs in your terminal. Pairs any LLM (via AWS Bedrock or OpenRouter) with ten built-in tools and a split-pane TUI, then works autonomously through pentests, red-team exercises, and infra audits. You set the guardrails, it does the grinding.

RustTUILLM agentAGPL-3.0offsec

what it is

seval is a chat assistant in your terminal that can actually do things. Ask it to investigate a target and it runs commands, reads files, searches the web, and chains tools together — all while you watch in real time. It’s the same shape as a coding agent, but purpose-built for offensive security rather than a general-purpose coder bent toward it.

It gives the model ten real tools — shell, read, write, edit, grep, glob, ls, web_fetch, web_search, and save_memory — and lets it invoke them autonomously in multi-turn loops. Point it at a pentest engagement, red-team exercise, or your own infra audit and it handles the grinding: enumeration, vulnerability discovery, exploit development, reporting. Bring your own LLM through AWS Bedrock or OpenRouter; Claude, GPT, Llama, Gemini, Mistral, and DeepSeek families all work, and you can switch models mid-session with /model. The interface is a split-pane TUI — conversation on one side, live tool activity on the other, with a status bar tracking model, token usage, and session.

you set the guardrails

Autonomy is a dial, not a switch. Four approval modes decide what the agent can do without asking:

  • plan — read-only recon, no tools executed.
  • default — auto-approves reads, asks before writes or shell.
  • auto-edit — auto-approves reads and file edits, asks for shell.
  • yolo — full autonomy, everything auto-approved.

sub-agents and scanning

The agent can spawn specialised sub-agents with spawn_agent — security-analyzer, code-reviewer, and recon-agent ship built in — that run in parallel with isolated context and filtered tool sets, then report their findings back. There’s also a rules-driven scanner with static and runtime rule packs for auditing cloud infrastructure.

it remembers

Every conversation is persisted to a local SQLite database, so you can resume, export, or import sessions across machines. The agent saves important findings with save_memory, scoped to the project directory and reloaded into future sessions. When a conversation nears the model’s context limit, seval automatically compresses older messages to free up room.

## install
$ brew install Hari-Nagarajan/tap/seval
# or, with Rust 1.95+:
$ cargo install seval
# then run the setup wizard:
$ seval init
## architecture
mermaid · seval.arch.mmd
graph TD
  YOU["you (operator)"]
  TUI["seval TUI<br/>split-pane · ratatui"]
  APPROVAL["approval gate<br/>plan · default · auto-edit · yolo"]
  AGENT["agent loop<br/>(rig-core)"]
  LLM["LLM<br/>AWS Bedrock / OpenRouter"]
  TOOLS["10 built-in tools:<br/>shell · read · write · edit<br/>grep · glob · ls<br/>web_fetch · web_search · save_memory"]
  SUB["sub-agents<br/>security-analyzer · code-reviewer · recon-agent"]
  SCAN["scanner<br/>static + runtime rule packs"]
  DB["SQLite<br/>sessions + project memories"]

  YOU --> TUI
  TUI --> AGENT
  AGENT -->|chat| LLM
  LLM -->|tool calls| AGENT
  AGENT --> APPROVAL
  APPROVAL -->|approved| TOOLS
  AGENT -->|spawn_agent| SUB
  AGENT --> SCAN
  TOOLS -->|output| AGENT
  AGENT --> DB
  AGENT -->|render| TUI
## demo
seval · ~/eng/acme-audit session 0x4a · 12 turns · approval: default
╭─ seval ─────────────────────────────────────────────────────╮
│ > enumerate anything ssh-able on 10.0.4.0/24, log candidates  │
╰───────────────────────────────────────────────────────────────╯
[14:02:11] thinking…
[14:02:13] tool: shell  ⏵ approve? [y/N]
            $ nmap -p22 --open -T4 10.0.4.0/24
[14:02:14] y
[14:02:47] └─ 8 hosts up · 3 with :22 open
[14:02:47] tool: shell (auto)
            $ nmap -sV -p22 10.0.4.{12,17,33}
[14:03:09] └─ OpenSSH_8.9p1 · OpenSSH_9.6p1 · Dropbear_2022.83
[14:03:11] tool: save_memory
            └─ "dropbear on .33 — embedded target, revisit"
[14:03:12] done. 3 candidates written to notes.
## links
NORMAL
󰊢main
󰈔 ~/projects/seval.md
utf-8 · LF · markdown
Top
󰍒1:1