MÓDULO DoYour.Art¶
Operator-crafted custom tests — Scapy + Go embed + PCAP replay.
Function¶
3-mode Art Studio for crafting custom traffic patterns and replaying them through the DUT. Designed for operator craftsmanship — the brand pun "Do Your Art" is literal.
Status¶
| Phase | Scope | Status |
|---|---|---|
| Scaffold (v3.7.0, PR #678) | Pod, K8s manifests, gVisor RuntimeClass, TypeScript schemas | ✅ |
| Phase A (PRs #992–#998) | Operator-usable surface — DY-A1 through DY-A7 | ✅ |
| DY-A4b (post-Phase A) | Durable MinIO bucket-and-quota, BPF / MAC / IP rewrite | ⏳ |
| DY-A6b (post-Phase A) | Postgres-backed escrow + MGMT-plane UTXO vault | ⏳ |
| Phase B (v5.1) | Live metrics streaming + report PDF + Monaco LSP | ⏳ |
| Phase C (v5.5) | Community gallery (publish / fork / like / comment) | ⏳ |
See ADR-0081 for the locked decisions, sub-PR breakdown, and the answers to the 5 open questions from the discuss memo.
Identity¶
| Element | Value |
|---|---|
| Plane | DATA |
| Internal code | doyour-studio |
| K8s namespace | web-agents (both pod + Go builder sidecar) |
| OOBI slot | .81 |
| Network | VLAN 2901, subnet 172.20.0.0/16 |
| Sandbox | gVisor (runsc) — mandatory |
| Tier gate | Free 1 piece / 5 min · Indie 10 / 30 min · Team ∞ / 2 hr · Enterprise ∞ / 24 hr |
3 modes (all operator-usable)¶
| Mode | Route | Backend |
|---|---|---|
| Scapy (Python) | /art-studio |
POST /exec-python on the Scapy pod (Python 3.12 + Scapy 2.7.0, python3 -I isolated mode) |
| Go embed | /art-studio/go-embed |
POST /build-and-run on the doyour-art-go-builder sidecar pod (Go 1.26.3 + gopacket pre-warmed) |
| PCAP replay | /art-studio/pcap-replay |
Dashboard POST /api/doyour/pcaps (upload), pod POST /replay-pcap (tcpreplay) |
All three modes share the same UI, same Monaco editor, same
Save & run flow, same status pill, same escrow row.
Operator controls¶
/art-studio— Art Studio UI (default tab = Scapy)/art-studio/go-embed— Go embed tab/art-studio/pcap-replay— PCAP replay tab (upload + replay)- Token escrow — every run holds tokens upfront; settled on terminal status (refund / deducted / overage)
- Tier admission — free-tier rolling window enforced via
429 Too Many Requests+Retry-After - Live log tail — last 64 lines surfaced in the run panel
Pod-side configuration¶
| Env var | Default | Effect |
|---|---|---|
DOYOUR_ART_POD_URL |
(unset → simulator) | Base URL for the Scapy/PCAP pod (e.g. http://doyour-art:8081) |
DOYOUR_ART_GO_BUILDER_URL |
(unset → simulator) | Base URL for the Go builder pod (http://doyour-art-go-builder:8082) |
DOYOUR_ART_POD_TIMEOUT_MS |
15000 |
Scapy exec HTTP timeout |
DOYOUR_ART_GO_BUILDER_TIMEOUT_MS |
360000 |
Build+run HTTP timeout (6 min) |
DOYOUR_ART_PCAP_TIMEOUT_MS |
360000 |
PCAP replay HTTP timeout |
Without any env var the dashboard uses an in-memory deterministic simulator — useful for local dev + e2e tests without an attached cluster.
Key telemetry (future)¶
doyour_pieces_run_total{mode,tier,status}— usage by mode / tier / outcomedoyour_token_balance_seconds{operator}— quota remainingdoyour_escrow_settle_total{outcome}— refund / deducted / overage countsdoyour_gallery_pieces_total— community gallery size (Phase C)
Notes¶
DOM-aware: production mode hard-blocks DoYour unless DDPB unlock + audit reason. Tier B per ZTP-prem tier policy (garble-obfuscated CI). Audit records are summary-only — no source body, no per-packet (per the locked decision in ADR-0081 §question 4).
Related¶
- ADR-0025 — offensive-suite parent
- ADR-0081 — Phase A decisions
- KALI/DoYour primer