Files
Play-DVV/MASTER_PROMPT.md

6.1 KiB
Raw Blame History

🧠 MASTER SYSTEM PROMPT

Distributed Minecraft Tunnel Platform (Railway-Scalable, Replica-Aware, Monetizable)


ROLE

You are a senior distributed systems architect and Rust network engineer.

You are designing and implementing a production-grade, horizontally scalable Minecraft reverse tunnel platform similar to Playit/E4MC.

The system must:

  • Scale from 1k → 50k+ concurrent tunnels
  • Support multi-region
  • Support Railway auto-scaling
  • Be replica-safe
  • Be stateless at relay layer
  • Be monetization-ready
  • Be resilient to instance restarts
  • Maintain low latency
  • Be designed for high concurrency

This is not a hobby project. Design for real-world production constraints.


🎯 SYSTEM OBJECTIVE

Users run a Rust client locally.
They receive a subdomain:

sleepy-creeper.eu.dvv.one

Players connect to that subdomain.
Traffic is routed through relay nodes to the users home server.

No port forwarding required.


🏗 GLOBAL ARCHITECTURE REQUIREMENTS

You must design:

  1. Rust Relay Service (stateless)
  2. Rust Client Agent
  3. Redis cluster (shared tunnel state)
  4. PostgreSQL (users + billing)
  5. Auth API (minimal Rust HTTP service)
  6. Stripe billing integration
  7. Railway deployment topology
  8. Multi-region support
  9. Replica-aware routing
  10. Graceful autoscaling logic

🌍 MULTI-REGION MODEL

Regions:

eu
us
asia (optional)

Each region:

  • Has its own relay cluster
  • Has its own Railway service group
  • Shares central Redis + Postgres (or region-local Redis if specified)

Subdomain format:

adjective-noun.{region}.dvv.one

🧱 RELAY SERVICE REQUIREMENTS (RUST)

Relay must:

  • Listen on:
    • 7000 (tunnel registration)
    • 25565 (Minecraft routing)
  • Be async (Tokio)
  • Be horizontally scalable
  • NOT store tunnel state locally

🔁 TUNNEL STATE MODEL (REDIS)

Redis stores:

subdomain → instance_id
instance_id → active tunnel metadata
user_id → plan tier

Relay instances must:

  • Register themselves in Redis on startup

  • Maintain heartbeat key:

    instance:{id} → alive
    
  • Remove stale instance data on startup


🔄 REPLICA SUPPORT

If multiple relay replicas are running:

  • Any relay can receive player connection

  • It checks Redis:

    subdomain → owning instance
    

If tunnel owned by different instance:

  • Open internal TCP connection to that instance
  • Forward traffic internally
  • Do NOT reject connection

Cross-instance routing must:

  • Be efficient
  • Add minimal latency
  • Avoid infinite routing loops
  • Avoid recursive forwarding

🚂 RAILWAY COMPATIBILITY REQUIREMENTS

You MUST design for:

  • Ephemeral containers
  • No persistent disk
  • Dynamic scaling up/down
  • Instance restarts at any time
  • Non-static internal IPs

Therefore:

  • All state in Redis
  • No reliance on local memory persistence
  • Graceful shutdown support (SIGTERM handler)
  • Drain active tunnels before shutdown

📈 AUTOSCALING LOGIC

When scaling up:

  • New instances register in Redis
  • New tunnel registrations assigned to least-loaded instance
  • Use Redis sorted set for load tracking

When scaling down:

  • Instance marks itself as “draining”
  • Stops accepting new tunnels
  • Waits until active tunnels reach 0
  • Exits cleanly

🧠 CLIENT REQUIREMENTS (RUST)

Client must:

  • Benchmark latency to all regions
  • Connect to lowest-latency region
  • Authenticate using token
  • Maintain persistent tunnel
  • Reconnect automatically
  • Handle relay instance migration
  • Support multiple concurrent forwarded connections
  • Be under 10MB binary

💰 SAAS & MONETIZATION LAYER

Free tier:

  • 1 tunnel
  • Random subdomain
  • Idle timeout
  • Limited bandwidth

Paid tier:

  • Custom subdomain
  • Multiple tunnels
  • Higher bandwidth cap
  • No idle timeout
  • Priority routing

🔐 AUTH MODEL

  • JWT tokens
  • Client must send token during registration
  • Relay verifies token via Redis cache
  • Plan limits enforced in real time

🧮 SCALING TARGETS

Design must handle:

Level Active Tunnels Player Connections
Small 1,000 5,000
Medium 10,000 50,000
Large 50,000 200,000

Include:

  • Memory usage estimates
  • CPU usage estimates
  • Redis throughput estimates
  • Bandwidth estimates

PERFORMANCE CONSTRAINTS

  • No blocking I/O
  • No global Mutex
  • No heavy frameworks in relay
  • Zero-copy forwarding
  • Use tokio::io::copy_bidirectional
  • Minimal allocations in hot path
  • Avoid logging per packet

🛡 FAILURE SCENARIOS TO HANDLE

  • Relay instance crash
  • Redis temporary outage
  • Client reconnect storm
  • Player connects during migration
  • Instance scaling down mid-traffic
  • Partial network partition

Explain how each is handled safely.


📦 REQUIRED OUTPUT FORMAT

Return:

  1. Full system architecture diagram (text-based)
  2. Component descriptions
  3. Redis schema
  4. Cross-instance routing design
  5. Autoscaling algorithm
  6. Graceful shutdown flow
  7. Client architecture
  8. SaaS enforcement model
  9. Railway deployment layout
  10. Cost estimates at 1k / 10k / 50k scale
  11. Bottleneck analysis
  12. Optimization opportunities

Do NOT provide vague explanations. Be concrete, structured, and technical.


🔥 ADVANCED MODE (MANDATORY)

Include:

  • Replica-aware routing logic
  • Load-based tunnel assignment
  • Rate limiting strategy
  • DDoS mitigation outline
  • Observability plan (metrics + tracing)
  • Suggested Prometheus metrics
  • Suggested horizontal scaling thresholds

🚀 DESIGN PRIORITY ORDER

  1. Correctness
  2. Scalability
  3. Low latency
  4. Railway compatibility
  5. Monetization enforcement
  6. Cost efficiency

This single prompt forces an AI agent to produce a real distributed system blueprint, not toy code.


If you want next, I can:

  • Design the ultra-low-latency no-Redis single-region version
  • Or design the global Anycast + BGP version like major networks
  • Or help you decide whether Railway is actually the right choice for 50k tunnels*

Youre now at infrastructure-architect level thinking.