SYSTEM ARCHITECTURE

Anonymous resource exchange across independent nodes. Three VPSs, four layers of timing protection, and enough cover traffic that real actions are invisible.

Infrastructure
Your Node
Temple of Light
n8n.templeoflight.online
Adapter Intake Adapter Dispatch Delay Queue (DB) Decoy Generator
HTTPS
Proxy Layer
Iceland
sacr.is/a/hub
Caddy Reverse Proxy Shlink URL Shortener TLS Termination
HTTPS
Central Hub
Agora Hub
demo.sanctuary.is
Hub Engine (n8n) PostgreSQL + pgcrypto Sim Manager (30 agents) 8 Protocol Handlers
Trace an Action

Follow a single action from your internal decision all the way to the Hub. Click through each step to see what happens.

YOUR WORKFLOW Internal Decision
Your Temple of Light system decides it has surplus herbal supplies to offer on the network. An existing n8n workflow makes an HTTP POST to the local Adapter Intake.
POST /webhook/agora-adapter { "action": "publish", "node_id": "agora_0e83...", "items": [{ "category": "supply", "tag": "item_a7f2", "quantity": 20 }] }
ADAPTER INTAKE Random Delay Assigned
The Intake validates the action, loads your node's config, and computes a random delay between 30 minutes and 6 hours (uniform distribution). The action is inserted into the local PostgreSQL queue with a future release_at timestamp. Nothing leaves your VPS yet.
-- Inserted into adapter_queue -- delay: 2h 14m (random, uniform 30min–6h) release_at: 2026-01-31 21:31:00 UTC status: queued is_decoy: false (Hub never sees this flag)
QUEUE Waiting in the Delay Queue
The action sits in your local database. The Dispatch workflow runs every 15 minutes, but only picks up actions whose release_at has passed. Your action waits ~2 hours. During this time, the Dispatch is still running — sending decoy traffic to maintain a baseline noise level. An observer sees regular outbound traffic regardless of your real activity.
15 min: dispatch runs → 0 real, 2 decoys sent 30 min: dispatch runs → 0 real, 1 decoy sent 45 min: dispatch runs → 0 real, 2 decoys sent ... 2h 15m: dispatch runs → release_at passed! → action ready
ADAPTER DISPATCH Decoy Injection + Shuffle
Dispatch picks up your real action. It generates decoys based on your decoy_rate (0.30 = 1 decoy for this batch). The decoy is a random PUBLISH, SEEK, or HEARTBEAT using your node's capabilities. Real and decoy actions are combined and shuffled using Fisher-Yates. The ordering is destroyed — the Hub can't tell which came first.
Batch before shuffle: [0] REAL publish (your surplus herbs) [1] DECOY seek (fake need for "equipment") Batch after Fisher-Yates shuffle: [0] DECOY seek ← sent first [1] REAL publish ← sent second
ICELAND PROXY IP Obfuscation
Each action is POSTed to sacr.is/a/hub over HTTPS. Caddy on the Iceland VPS receives it and forwards to the Hub. The Hub sees the connection from Iceland's IP (82.221.139.202), not your VPS. The same domain serves your public URL shortener links — Agora traffic is indistinguishable from normal web traffic to sacr.is.
Observer sees: Your VPS → HTTPS → sacr.is (URL shortener — normal traffic) Hub sees: 82.221.139.202 (Iceland) → POST /webhook/agora No connection to your VPS IP
AGORA HUB Action Processed
The Hub receives the PUBLISH action from agora_0e83.... It creates a listing in the marketplace. The Hub processes this identically to the 30+ simulation agents and their decoy traffic. Your real publish is one action among hundreds per round — invisible in the noise.
Hub state after processing: listing_id: PL7-c1cb16-1769887591715 seller: agora_0e83... (opaque — Hub doesn't know it's "Temple of Light") category: supply tag: item_a7f2 (opaque — Hub doesn't know it's "herbal supplies") status: active If another node SEEKs category "supply", Hub creates a trade_token and match.
Live System Stats
Hub Nodes
protocol + simulation
Current Round
Hub round cycle
Listings
active on marketplace
Seeks
active requests