Configuration
One config file: /etc/romp/romp.json. Every option is
overridable by an environment variable. Re-read on otter restart.
romp.json
{
"apiKey": "rk_live_…",
"bind": "127.0.0.1",
"ports": {
"red": 4000, "blue": 4100, "yellow": 4200,
"black": 4300, "white": 4400, "grey": 4500,
"green": 4700, "orange": 4800, "guard": 4010
},
"demo": {
"enabled": false,
"redactionString": "[PROPRIETARY]"
},
"ai": {
"model": "deepseek-r1-distill-qwen-1.5b",
"ollama": "http://127.0.0.1:11434",
"flashAttn": false
},
"alerts": {
"store": "/var/lib/romp/alerts.db",
"retentionDays": 30
},
"scope": {
"allowedDomains": [],
"blockedDomains": []
}
}
Environment overrides
| Variable | Effect |
|---|---|
ROMP_API_KEY |
Override apiKey. |
ROMP_BIND |
Override bind. Set to 0.0.0.0 to expose
externally — read the AUP first.
|
ROMP_DEMO_MODE |
1 = enable redaction. Defensive otters never redact.
|
ROMP_ALLOW_PRIVATE_TARGETS |
1 = permit RFC1918 / loopback scan targets.
Cloud-metadata stays blocked.
|
ROMP_LICENSE_PATH |
Path to license JSON. Default
/opt/romp/.license.json.
|
ROMP_LOG_LEVEL |
error · warn ·
info (default) · debug.
|
License file
Romp ships an Ed25519 public key at
/opt/romp/.license-public.pem. License JSONs are signed
on our server. Verifier is offline — no phone-home, no DRM check.
{
"tier": "pro",
"issuedTo": "you@example.com",
"issuedAt": "2026-05-03T22:46:39Z",
"expiresAt": "2027-05-03T22:46:39Z",
"signature": "base64-ed25519-…"
}
Tampered license = signature fails verification = otter refuses to start. Lost license = email gerald@domainless.fun for a re-issue.
Demo mode
Set demo.enabled: true when showing Romp to customers /
on streams. Wraps every Red / Black / Blue response and replaces
target hostnames, IPs, and identifying paths with
[PROPRIETARY]. Counts, grades, severity scoring all
survive — only the identifying strings get scrubbed. Grey, Green, and
Orange are never redacted because they target your own host.
Scope guards
scope.allowedDomains and
scope.blockedDomains are enforced before any active probe
runs. Use them when you're scanning bug-bounty programs to stop
yourself from accidentally hitting an out-of-scope asset.
{
"scope": {
"allowedDomains": ["*.target.com", "api.target.com"],
"blockedDomains": ["legacy.target.com"]
}
}
AI / Ollama
Set ai.ollama to your local Ollama instance.
ai.flashAttn defaults to false — Ollama +
Maxwell-class GPUs (GTX 970) crash on flash-attention with models
>1.5B. Leave it off unless you're on a newer card.
Where things live
| Path | What |
|---|---|
/opt/romp/ |
Install root. |
/etc/romp/romp.json |
Config. |
/etc/romp/env |
Environment overrides loaded by systemd. |
/var/lib/romp/ |
Persistent state — alerts DB, baselines. |
/var/log/romp/ |
Per-otter rotating logs. |
/opt/romp/.license.json |
License JSON. |
/opt/romp/.license-public.pem |
Ed25519 verifier key. |