Quickstart
This gets one request through Wardline end to end in under five minutes.
1. Start a mock upstream
Wardline proxies to an upstream MCP server. For this quickstart, any HTTP server that returns 200 is good enough to prove the path works:
python3 -m http.server 9000
2. Validate the example policy and config
./wardline validate-policy --file policy.yaml.example
./wardline validate-config --config wardline.yaml.example
3. Start Wardline
./wardline serve --config wardline.yaml.example
4. Make a request
Every request must carry an X-Wardline-Identity header — Wardline
matches this value plus the MCP tool name against your policy rules.
curl -X POST http://localhost:8080 \
-H "X-Wardline-Identity: agent-abc123" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"read_file"}}'
This matches the agent-abc123 / read_file allow rule already in
policy.yaml.example. You should see the request forwarded to your mock
upstream and a JSON audit line printed to Wardline’s stdout with
"decision":"allow".
Try changing the identity header to something not in the policy file and
re-run the same curl — you’ll get a deny decision and a matching audit
entry, with nothing forwarded upstream.
Next: understand the model in Concepts, or jump straight to a specific capability in Features.