Claude-code-minoan proxelar
Intercept, inspect, and modify HTTP/HTTPS traffic via a Rust MITM proxy with Lua scripting hooks. Supports API debugging, LLM call capture for evals, endpoint mocking, CORS/auth header injection, latency simulation, and telemetry blocking. Triggers on 'proxy', 'intercept traffic', 'inspect requests', 'mock API', 'capture API calls', 'MITM', 'network debug', 'HTTP inspection'.
install
source · Clone the upstream repo
git clone https://github.com/tdimino/claude-code-minoan
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/tdimino/claude-code-minoan "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/integration-automation/proxelar" ~/.claude/skills/tdimino-claude-code-minoan-proxelar && rm -rf "$T"
manifest:
skills/integration-automation/proxelar/SKILL.mdsource content
Proxelar
Rust-based MITM proxy for intercepting and transforming HTTP/HTTPS traffic via Lua scripting. Provides TUI, terminal, and web GUI interfaces. Installed via
brew install proxelar.
Category
Infrastructure Operations
Modes
| Mode | Command | When to use |
|---|---|---|
| Forward proxy | | Intercept outbound traffic from any app configured to use |
| Reverse proxy | | Inspect traffic to a local dev server without configuring the client |
| Web GUI | | Agent-visible network inspector at — screenshot for visual feedback |
| Scripted | | Automated request/response transformation via Lua hooks |
Combine modes:
proxelar -m reverse --target http://localhost:3000 -i gui --script scripts/log_to_jsonl.lua
CLI Reference
| Flag | Description | Default |
|---|---|---|
| , , | |
| , | |
| Listening port | |
| Bind address | |
| Upstream target (required for reverse mode) | -- |
| Web GUI port | |
| CA certificate directory | |
| Lua script for request/response hooks | -- |
Lua Scripting
Define
on_request and/or on_response hooks:
function on_request(request) -- request.method, request.url, request.headers, request.body -- Return request to forward (modified or not) -- Return response table to short-circuit: { status = 403, headers = {}, body = "Blocked" } -- Return nil to pass through unchanged end function on_response(request, response) -- response.status, response.headers, response.body -- Return response (modified or not), or nil to pass through end
Bundled Lua Scripts
Run any script with
proxelar --script ~/.claude/skills/proxelar/scripts/<name>.lua
| Script | Purpose |
|---|---|
| Log request/response pairs as JSONL to |
| Capture LLM API calls (Anthropic/OpenAI/Gemini) as structured JSONL for eval pipelines |
| Template for mocking API endpoints — edit the table |
| Add permissive CORS headers to all responses |
| Add configurable artificial latency to matching URLs |
| Block analytics and telemetry domains |
Agent Integration
Agent-Browser Bridge
Route agent-browser traffic through Proxelar for combined page + network visibility:
# Terminal 1: start proxelar in reverse mode proxelar -m reverse --target http://localhost:3000 -i gui --script ~/.claude/skills/proxelar/scripts/log_to_jsonl.lua & # Terminal 2: navigate through proxelar, then snapshot agent-browser --proxy "http://127.0.0.1:8080" open http://127.0.0.1:8080 && agent-browser snapshot
Agent Visual Feedback via Web GUI
Start Proxelar with
-i gui, then screenshot http://localhost:8081 via Claude-in-Chrome or agent-browser to give the agent network-layer visibility into what the application is doing.
Frametime + Network Correlation
Inject
scripts/frametime_bench.js into a running page via mcp__claude-in-chrome__javascript_tool or agent-browser eval. Read console output with pattern p50 to get percentile data. Run alongside latency_inject.lua to correlate network latency with rendering jank.
CA Certificate
First run auto-generates
~/.proxelar/proxelar-ca.pem. Trust it once:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/.proxelar/proxelar-ca.pem
Or visit
http://proxel.ar through the proxy for guided install.
Gotchas
- Check port 8080 is free before starting:
lsof -i :8080 - Reverse mode requires
— CLI errors immediately if omitted--target - Lua scripts are loaded once at startup; edit requires restart
- Web GUI binds to
by default; use127.0.0.1:8081
for remote access--addr 0.0.0.0 - WebSocket traffic passes through but Lua hooks only fire on HTTP request/response, not individual WS frames
- TUI and Web GUI support interactive request inspection, editing, and dropping — not just passive viewing