Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Configuration

Settings come from a TOML file. red-clippy serve reads ./red-clippy.toml if it exists, and otherwise runs entirely on built-in defaults. Copy the example and edit:

cp red-clippy.toml.example red-clippy.toml
bind             = "127.0.0.1:7337"
database_url     = "sqlite://red-clippy.db?mode=rwc"
storage_root     = "./red-clippy-storage"   # uploaded evidence lives here
max_upload_bytes = 26_214_400               # 25 MiB

Settings

SettingDefaultMeaning
bind127.0.0.1:7337Address and port for the HTTP server.
database_urlsqlite://red-clippy.db?mode=rwcSQLx URL. SQLite is the supported backend.
storage_root./red-clippy-storageDirectory for evidence and per-pentest files. Created at startup if missing.
max_upload_bytes26214400Cap on a single upload, in bytes.
frontend_distunsetOverride for the built SPA. File-only.
local_openfalseAllow the Files page to open folders on the server host. File-only.

Relative paths are resolved against the working directory the server was started in. Always cd into the folder holding the binary before launching it.

Precedence

Per field: CLI flag > environment variable > TOML > built-in default.

SettingCLI flagEnvironment variable
bind--bind, -bRED_CLIPPY_BIND
database_url--database-urlRED_CLIPPY_DATABASE_URL
storage_root--storage-rootRED_CLIPPY_STORAGE_ROOT
max_upload_bytes--max-upload-bytesRED_CLIPPY_MAX_UPLOAD_BYTES
config file path-c, --configRED_CLIPPY_CONFIG

The database and storage flags are global, so red-clippy init-db and the other CLI helpers honour them too.

An unrecognised key in the TOML file stops startup with an error instead of being ignored, so a typo like bnid fails loudly rather than leaving the server quietly on a default.

File-only settings

frontend_dist points at a directory holding a built SPA. Release binaries embed frontend/dist at compile time, so this is normally unset and there is no sidecar directory to ship. Set it to serve a patched bundle without a Rust toolchain; the server then reads <frontend_dist>/index.html and <frontend_dist>/assets/.

local_open lets the Files page’s “reveal in file manager” button shell out to xdg-open, open or explorer.exe on the machine running the server. It ships off. Turn it on only when the server is your own desktop in a logged-in graphical session. Under systemd, or when you are reaching the panel across a network, there is no session for it to open into.

Logging

Log filtering uses RUST_LOG, defaulting to info,sqlx=warn. Logs go to stderr.

RUST_LOG=debug ./red-clippy serve         # verbose
RUST_LOG=warn ./red-clippy serve          # quiet
RUST_LOG=info,sqlx=info ./red-clippy serve  # include SQL

Network exposure

Red Clippy binds to 127.0.0.1 and is meant to run on your own machine, next to the agent driving it. It is not built to be exposed to a network or the internet: there is no TLS, no rate limiting on the login form, and API keys grant full access to everything in their organization.

If you do change bind, put it behind TLS and treat the API keys like the passwords they are.