Project: Pal-E World
Vision
A Palworld cloud gaming platform on k8s. Rent on-demand Vast.ai GPUs, run GOW (Games on Whales) containers with Sunshine streaming, connect via Moonlight from any device. No local gaming GPU required — archbox is a thin client, Hyprland stays running.
Target audience: Arch Linux + Hyprland users (dogfooding our own setup). Palworld 1.0 launches July 10, 2026.
Status
- Dedicated server: IaC in palworld-server repo. REST API enabled (port 8212), 16Gi RAM, RCON retained with deprecation note.
- Helm deploy + headless GPU: Merged (palworld-server PR #9). Fixed Helm boolean/port-array bugs, added ConnectedMonitor xorg config for NVENC without host compositor. Docs restructured with mermaid diagrams and user stories.
- Sunshine self-hosted: Merged (palworld-server PR #14). Harbor-hosted Sunshine image (
harbor.tail5b443a.ts.net/pal-e/sunshine:latest), parameterized all container images, LOG_LEVEL env var, init container fixes state file permissions. GoW source mirrored to Forgejo (ldraney/sunshine).
- Tailscale streaming fixes: Merged (palworld-server PR #15). Injected
origin_pin_allowed = wan for Tailscale pairing, increased ping_timeout to 10000ms to prevent VPN jitter disconnects. Documented curl-based PIN workflow with 30s timing window.
- iOS Moonlight streaming: Confirmed working (2026-07-11). HEVC encoding, Xbox One gamepad detected and stable. iPhone must be on WiFi — cellular + Tailscale causes RTSP ETIMEDOUT (error 60). Controller bug fixed: default ping_timeout (2000ms) was too aggressive for Tailscale.
- Local docker-compose streaming: Merged (palworld-server PR #19). Full GoW stack in
docker/ for local streaming. Modesetting xorg driver + KMS capture + libx264 encoding. Sunshine config override mechanism for Tailscale WAN pairing. Terraform renamed to tofu/. Docs split into docs/dev/ and docs/prod/. Vulkan black screen fixed with windowed launch option (#20 closed). MacBook streaming over Tailscale confirmed working.
- NvFBC/NVENC blocked: Issue #22 open. NvFBC capture fails with OpenGL 0x505 in containers — mesa DRI3 can't create GL context for nvidia-drm. Both docker and k8s deployments use libx264 software encoding (50-80ms/frame lag). GPU encoding is the #1 performance blocker.
- Vast.ai integration: Restored (pal-e-platform PR #515, reverts #507). External data source queries GPU offers. RTX 4090 ~$0.14/hr.
- Salt client states: Merged (PR #478). gaming-session start/teardown scripts, SOPS-encrypted API key, gaming pillar.
- Vast.ai bootstrap: Merged (PR #481). Docker Compose GOW stack, onstart.sh (Tailscale + docker compose up), start.sh with MagicDNS resolution.
- Tailscale auth key: Merged (PR #484). Terraform-managed reusable+ephemeral key, tag:gaming ACL. No manual key generation needed.
- Client-side docs: Merged (PR #12, hyprland-config). README, architecture, pal-e-world.md updated.
- E2E smoke test tooling: Merged (PR #482). Preflight check script, smoke test results template. Manual test pending.
User Stories
| Story |
Description |
Status |
| pal-e-world |
As a Palworld player, I want to launch a cloud gaming session from my Arch workstation so I can play without local GPU conflicts |
active |
Architecture
Roadmap
| Phase |
Status |
Summary |
| Phase 1: Revival |
COMPLETE |
Unarchive repo (#468 ✓), Vast.ai provider (#474 ✓), REST API (#470 ✓), Salt client (#469 ✓) |
| Phase 2: Platform |
IN PROGRESS |
Docs (#1628 ✓), bootstrap (#479 ✓), smoke test tooling (#480 ✓), Tailscale key (#483 ✓), Harbor Sunshine (#14 ✓), Tailscale pairing (#15 ✓), iOS streaming ✓, controller ✓, local docker streaming (#19 ✓), modesetting/KMS capture (#21 ✓), Vulkan fix (#20 ✓). Remaining: NvFBC/NVENC (#22), manual E2E test, landing page (#471 parked) |
| Phase 3: Scale |
planned |
Server clustering (#472), multi-user streaming, NVENC encoding (depends on #22) |
Repos
| Repo |
Platform |
Role |
Status |
| ldraney/palworld-server |
Forgejo |
GOW pod + dedicated server IaC |
active |
| ldraney/sunshine |
Forgejo |
GoW Sunshine source mirror (Harbor CI builds) |
active |
| ldraney/pal-e-platform |
Forgejo |
Salt states, Vast.ai Terraform, platform infra |
active |
| ldraney/hyprland-config |
Forgejo |
Client-side Hyprland + Moonlight setup |
active |
| ldraney/godaddy-tofu |
Forgejo |
Custom OpenTofu provider for GoDaddy DNS |
active |
Key Dates
- 2026-07-10: Palworld 1.0 — server clustering, RCON deprecated → REST API (port 8212), 16GB RAM minimum
- 2026-07-11: iOS Moonlight streaming confirmed working (PR #14 merged). Tailscale pairing + controller stability fixed (PR #15 merged).
- 2026-07-17: Local docker-compose streaming merged (PR #19). Modesetting/KMS/libx264 pipeline working. MacBook streaming over Tailscale confirmed. NvFBC bug filed (#22).
Resume Notes
- Phase 1 complete — all 4 tickets merged
- Phase 2: all IaC merged (12 PRs total). Local docker streaming working with modesetting/KMS/libx264. MacBook + iOS streaming verified. NvFBC (#22) is the #1 perf blocker — libx264 adds 50-80ms encode latency.
- Landing page (#471) parked — needs domain name from user + decomposition
- $24.82 Vast.ai credit available (~177 hours of RTX 4090)