Pal-E World — Project Page

project-pal-e-world Project Page

active project-page

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)