documentation

Self-host, configure, ship.

Everything below is pulled straight from github.com/xalgord/xalgorix. If a flag, env var, or endpoint appears here, it exists in the binary.

Install

Linux only. Requires Go 1.24.2 or newer. Node.js + npm are needed only when building the bundled React Web UI from source.

Build from source

git clone https://github.com/xalgord/xalgorix.git
cd xalgorix
make build
sudo install -m 755 build/xalgorix /usr/local/bin/xalgorix

make build compiles the React Web UI into internal/web/static, then builds the Go binary.

Or install with Go

GOPROXY=direct GOSUMDB=off \
  go install github.com/xalgord/xalgorix/v4/cmd/xalgorix@latest

Configure

Configuration sources, in order (later overrides earlier): /etc/xalgorix.env /home/<user>/.xalgorix.env (when launched via sudo) → ~/.xalgorix.env → process environment variables.

Minimal config

# ~/.xalgorix.env
XALGORIX_LLM=minimax/MiniMax-M2.7
XALGORIX_API_KEY=your_provider_api_key

Optional integrations

# Optional integrations
GEMINI_API_KEY=AIza...                        # web-search enrichment
AGENTMAIL_POD=am_us_pod_47                    # phase 15 email triage
AGENTMAIL_API_KEY=ak_...
XALGORIX_DISCORD_WEBHOOK=https://discord.com/api/webhooks/...
XALGORIX_DISCORD_MIN_SEVERITY=high

# Dashboard auth (required before binding to 0.0.0.0)
XALGORIX_USERNAME=admin
XALGORIX_PASSWORD=change-this-password        # prefer XALGORIX_PASSWORD_HASH

Run

Start the dashboard and open it locally:

xalgorix --web
# → http://127.0.0.1:9137

Or run a CLI scan without the Web UI:

xalgorix --target https://example.com \
  --instruction "Focus on SQLi, IDOR, auth bypass. Avoid destructive tests."

Install as a systemd service:

sudo xalgorix --start
sudo xalgorix --restart
sudo xalgorix --stop
sudo xalgorix --uninstall
journalctl -u xalgorix -f

Scan modes

Pick the shape of the engagement; the agent picks the techniques.

Single target

Use it for: Testing one known URL or host.

Flow: xalgorix --target https://example.com — the agent runs against that origin.

Wildcard / multi

Use it for: Enumerating related targets and scanning the discovered attack surface.

Flow: Pass a wildcard or multiple --target flags; the agent enumerates subdomains and fans out one sub-scan per live host.

CLI reference

FlagAliasDescription
--web-wStart the Web UI on http://127.0.0.1:9137.
--port <n>-pWeb UI port. Default 9137.
--bind <addr>Listen address. Default 127.0.0.1. Requires dashboard auth for non-loopback values.
--target <url>-tTarget URL, host, IP, or path. Repeatable.
--instruction <txt>-iCustom scan instructions (e.g. 'Focus on SQLi and IDOR; avoid destructive tests').
--model <id>-mOverride XALGORIX_LLM for this run.
--update-upUpdate to the latest release.
--version-vPrint version.
--startInstall and start the system service.
--stop / --restart / --uninstallManage the systemd service.

Environment variables

A working subset — see the README for the full list (rate limits, proxy, runtime, security, integrations).

VariableDefaultDescription
XALGORIX_LLMRequired model name, usually with provider prefix.
XALGORIX_API_KEYRequired LLM provider API key.
XALGORIX_API_BASEprovider defaultCustom OpenAI-compatible API base URL.
XALGORIX_REASONING_EFFORThighlow, medium, high, or xhigh.
XALGORIX_LLM_MAX_RETRIES5Retry count for transient LLM failures.
XALGORIX_MAX_ITERATIONS0Agent iteration cap. 0 = unlimited.
XALGORIX_LLM_MAX_INFLIGHT4 × max instancesCaps simultaneous outbound LLM calls across all running scans.
XALGORIX_DATA_DIR~/.xalgorix/data/Workspace root for scan output, notes, schedules, and artefacts.
XALGORIX_RATE_RPS10Sustained outbound request rate.
XALGORIX_RATE_BURST20Outbound burst size.
XALGORIX_USE_PROXYfalseEnable proxy routing.
XALGORIX_PROXY_FILEFile containing one proxy per line.
XALGORIX_PROXY_ROTATIONroundrobinroundrobin or random.
XALGORIX_DISABLE_BROWSERfalseDisable browser automation.
XALGORIX_BROWSER_PATHautoCustom Chrome / Chromium executable path.
XALGORIX_ALLOW_AUTO_INSTALLroot onlyPermit automatic package installation.

Provider prefixes

When XALGORIX_API_BASE is empty, Xalgorix infers the provider's default API base from the model prefix. Model names are not hard-coded — type any model ID the provider supports.

PrefixDefault API base
openai/https://api.openai.com/v1
anthropic/https://api.anthropic.com
deepseek/https://api.deepseek.com/v1
groq/https://api.groq.com/openai/v1
google/https://generativelanguage.googleapis.com/v1
gemini/https://generativelanguage.googleapis.com/v1
ollama/http://localhost:11434/v1
minimax/https://api.minimax.io/v1

Local REST API

Served by the same process on the dashboard's bind address (default 127.0.0.1:9137). Use these endpoints to script scans, integrate with your own UI, or build a SIEM pipeline.

MethodEndpointPurpose
POST/api/scanStart or save a scan.
POST/api/stopStop all running scans.
POST/api/restartSchedule a graceful backend restart. Waits until the scanner is idle (no active scans/instances) before restarting; in-flight work auto-resumes.
GET/api/statusGlobal status, panics recovered, watchdog kills, llm_inflight_cap, data_dir, allow_list.
GET/api/scansList scans.
GET/api/scans/:idGet scan detail.
DELETE/api/scans/:idDelete a scan and its report data.
GET/api/report/:idDownload a branded PDF report.
GET/api/instancesLive and historical instances.
GET/api/instances/:id/eventsBuffered event history for an instance.
POST/api/instances/:id/startStart a saved or completed scan as a new run.
POST/api/instances/:id/restartRestart with the same configuration.
POST/api/instances/:id/pausePause a running scan.
POST/api/instances/:id/resumeResume a paused scan.
POST/api/instances/:id/stopStop a specific instance.
POST/api/upload-logoUpload a report logo.
POST/api/upload-targetsUpload a target list.
GET/api/settings/environmentList editable environment settings.
POST/api/settings/environmentSave environment settings.
GET/api/settings/llmGet LLM settings.
POST/api/settings/llmSave LLM settings.
GET/api/settings/agentmailGet AgentMail settings.
POST/api/settings/agentmailSave AgentMail settings.
GET/wsWebSocket live event stream — tool calls, agent messages, findings, errors, HTTP, LLM activity.

WebSocket event stream

Connect to ws://127.0.0.1:9137/ws to receive a live feed of tool calls, agent messages, findings, errors, HTTP activity, and LLM activity.

# Tail the live feed with websocat
websocat ws://127.0.0.1:9137/ws

Safety notes

  • Use Xalgorix only against targets you own or have explicit written permission to test.
  • Review scan instructions before launching; tune XALGORIX_RATE_RPS and proxy settings to match engagement rules.
  • Exposing the dashboard externally requires authentication — the server refuses non-loopback binds otherwise.
  • Auto-install is disabled by default for non-root users; enable it only when you trust the host.
  • The scope guard now blocks tool calls against hosts that aren't a configured target or subdomain, including the dashboard's own listener.

FAQ

Ready to spin it up?

Clone the repo, set two env vars, and you have a local AI pentesting dashboard.