This repo lets you build the plugin to dist/ and compile/copy the Go agent to plugin/assets/bin/ using pnpm and go.
racecondition-plugin-src/
plugin/
manifest.json
frontend/
backend/
assets/bin/ # Agent binaries are copied here
tools/
build-plugin.mjs # Bundles plugin/ -> dist/*.zip
copy-agent.mjs # Copies agent binary to assets/bin/
build-agent.mjs # Builds the agent for multiple platforms -> agent-build/
agent-src/ # (optional) place the Go agent source code here (main.go)
dist/ # Plugin zip output here
agent-build/ # Multi-platform agent build output here
package.json
- Node 18+ and
pnpm - Go 1.20+ (if you're building the agent)
pnpm install- Compile the agent yourself or use an existing one.
- Copy its absolute path into the
RC_AGENT_BINenvironment variable and run:
RC_AGENT_BIN=/path/to/rcsp-h1-agent pnpm build:allThis will copy the binary to plugin/assets/bin/ and then generate the zip in dist/.
- Place the agent's Go code in
agent-src/(themain.gofile). - Run:
pnpm agent:build
pnpm build # Bundles the plugin to dist/or in one step:
pnpm build:agent-allpnpm buildIf no binary exists in
assets/bin/, the plugin will still work in external agent mode (URL is configurable within the plugin).
- Run single‑packet (Agent): concatenates N requests and sends them in a single write.
- Run parallel (Agent): opens N connections and fires everything at once (useful when the server rejects pipelining).
- SSE logs, start/end toasts, and a results table. Row selection to view RAW Request/Response; right-click for Copy RAW both.
- Timeout (ms) and Retries fields in the top bar.
- In Caido → Plugins → Install from Zip → choose the zip from
dist/. - Open Plugins → Race Condition.
- Connect to the agent (defaults to
http://127.0.0.1:8766). - Add requests to the Queue from History/Replay (Add to Race queue).
- Execute Run single‑packet (Agent) or Run parallel (Agent).
- Check the table and select a row to see the RAW data. Use the context menu's Copy RAW both.
- If
Pipelined < Count, the server does not accept pipelining. Use the Parallel button. - Keep the same host:port:TLS and consistent headers throughout the queue.
- Start agent button: the plugin backend
spawnstheplugin/assets/bin/rcsp-h1-agentbinary (or.exeon Windows) and waits ~600ms for it to come up on127.0.0.1:8766. You can then press Connect, or it will connect automatically. - Stop agent button: sends a
killsignal to the process launched from the plugin.
Make sure to include the binary inside the final zip (use
pnpm agent:copyorRC_AGENT_BIN=... pnpm build:all).
- Bundle-all-hosts: scripts to compile and bundle agent binaries for darwin/linux/windows into
assets/bin/. - Backend tries several paths (
-<platform>-<arch>,-<platform>, generic) and picks the one that works.