feat: scaffold relay client auth workspace
This commit is contained in:
311
MASTER_PROMPT.md
Normal file
311
MASTER_PROMPT.md
Normal file
@@ -0,0 +1,311 @@
|
||||
# 🧠 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 user’s 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<HashMap>
|
||||
* 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*
|
||||
|
||||
You’re now at infrastructure-architect level thinking.
|
||||
Reference in New Issue
Block a user