[PR #56] Wolf-Agent DRA: Direwolf Operator Implementation #57

Open
opened 2026-10-15 12:47:03 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/games-on-whales/fenrir/pull/56
Author: @axolotlite
Created: 8/20/2026
Status: 🔄 Open

Base: staging ← Head: feature/direwolf-dra


📝 Commits (10+)

  • 7183a93 Squashed commit of the following:
  • acfc1eb [session] cleanup profile
  • adc6d61 [lobby] initial dra implementation
  • acf4bbc [moonlight + session] refactor and allow stream + connection
  • beac224 [moonlight] initial implementation of session resuming
  • b8ab47d [direwolf] split lobby logic from session controller into lobby controller
  • b39f9f2 [examples] update generic devices example to use the dra
  • 68f1092 [session+pairing] implement per device client settings
  • 4b08129 [lobby] allow user to define device class in their applications
  • b09ae63 [crds] commit updated crds

📊 Changes

69 files changed (+4559 additions, -9144 deletions)

View changed files

📝 .dockerignore (+0 -1)
📝 Dockerfile.dev (+4 -1)
📝 cmd/moonlight-proxy/main.go (+1 -0)
📝 cmd/operator/main.go (+31 -24)
📝 cmd/wolf-agent/main.go (+245 -178)
📝 crds/direwolf.games-on-whales.github.io_apps.yaml (+6 -60)
📝 crds/direwolf.games-on-whales.github.io_lobbies.yaml (+17 -16)
📝 crds/direwolf.games-on-whales.github.io_pairings.yaml (+25 -0)
📝 crds/direwolf.games-on-whales.github.io_profiles.yaml (+0 -3440)
📝 crds/direwolf.games-on-whales.github.io_sessions.yaml (+27 -0)
📝 examples/generic_devices/firefox.yaml (+5 -29)
➕ examples/generic_devices/firefox2.yaml (+43 -0)
📝 examples/generic_devices/profile.yaml (+3 -39)
➕ hack/deploy/01-wolf-agent-standalone.yaml (+281 -0)
📝 hack/deploy/01-wolf-agent.yaml (+145 -19)
📝 hack/deploy/02-direwolf-operator.yaml (+12 -3)
📝 hack/deploy/02-moonlight-proxy.yaml (+4 -62)
📝 hack/deploy/03-misc.yaml (+240 -1)
➕ hack/resources/device_classes/README.md (+6 -0)
➕ hack/resources/device_classes/default_device_class.yaml (+11 -0)

...and 49 more files

📄 Description

This PR updates:

  • Direwolf Operator:
    • Session Controller is now split into lobby + session controller
    • removes the gateway api (for now)
  • Moonlight Proxy:
    • creates a session and lobby CRD and lets the controller handle it

Refactored the code and removed unused sections from the gateway api code.

The operator now works on a single node, provided they share an IP with:

  • moonlight-proxy: handling authentication ports
  • wolf-agent: handling streaming the application

Once the statefulset is ready, the moonlight proxy informs the moonlight client to start the stream.
since the moonlight proxy and wolf-agent share the same IP, the moonlight client will be able to successfully stream it.

There are a lot of refinments left, but I'm hoping to do those in another PR during the multi-node implementation.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/games-on-whales/fenrir/pull/56 **Author:** [@axolotlite](https://github.com/axolotlite) **Created:** 8/20/2026 **Status:** 🔄 Open **Base:** `staging` ← **Head:** `feature/direwolf-dra` --- ### 📝 Commits (10+) - [`7183a93`](https://github.com/games-on-whales/fenrir/commit/7183a9381ce474fb17fb28a46f61bb8d2f181dbd) Squashed commit of the following: - [`acfc1eb`](https://github.com/games-on-whales/fenrir/commit/acfc1eb3abef1d8ca5227924c020be1a20230ec7) [session] cleanup profile - [`adc6d61`](https://github.com/games-on-whales/fenrir/commit/adc6d618125abc447d8b6990e12a479cfcdd1211) [lobby] initial dra implementation - [`acf4bbc`](https://github.com/games-on-whales/fenrir/commit/acf4bbccfc725ce777a5c63c527d37096b4fab46) [moonlight + session] refactor and allow stream + connection - [`beac224`](https://github.com/games-on-whales/fenrir/commit/beac224803994ecf06801a3bd68f997c61649279) [moonlight] initial implementation of session resuming - [`b8ab47d`](https://github.com/games-on-whales/fenrir/commit/b8ab47d407250fc401db31cb57b16f0983c35261) [direwolf] split lobby logic from session controller into lobby controller - [`b39f9f2`](https://github.com/games-on-whales/fenrir/commit/b39f9f23ade2c623e5827a4ede72cf8c7be98d49) [examples] update generic devices example to use the dra - [`68f1092`](https://github.com/games-on-whales/fenrir/commit/68f1092525ca476fa7cd140c71b7f86f36ea6e67) [session+pairing] implement per device client settings - [`4b08129`](https://github.com/games-on-whales/fenrir/commit/4b08129234d594d0204f0b78e461304718a9dc99) [lobby] allow user to define device class in their applications - [`b09ae63`](https://github.com/games-on-whales/fenrir/commit/b09ae63138f6944907d5f8aeac624f51467c3175) [crds] commit updated crds ### 📊 Changes **69 files changed** (+4559 additions, -9144 deletions) <details> <summary>View changed files</summary> 📝 `.dockerignore` (+0 -1) 📝 `Dockerfile.dev` (+4 -1) 📝 `cmd/moonlight-proxy/main.go` (+1 -0) 📝 `cmd/operator/main.go` (+31 -24) 📝 `cmd/wolf-agent/main.go` (+245 -178) 📝 `crds/direwolf.games-on-whales.github.io_apps.yaml` (+6 -60) 📝 `crds/direwolf.games-on-whales.github.io_lobbies.yaml` (+17 -16) 📝 `crds/direwolf.games-on-whales.github.io_pairings.yaml` (+25 -0) 📝 `crds/direwolf.games-on-whales.github.io_profiles.yaml` (+0 -3440) 📝 `crds/direwolf.games-on-whales.github.io_sessions.yaml` (+27 -0) 📝 `examples/generic_devices/firefox.yaml` (+5 -29) ➕ `examples/generic_devices/firefox2.yaml` (+43 -0) 📝 `examples/generic_devices/profile.yaml` (+3 -39) ➕ `hack/deploy/01-wolf-agent-standalone.yaml` (+281 -0) 📝 `hack/deploy/01-wolf-agent.yaml` (+145 -19) 📝 `hack/deploy/02-direwolf-operator.yaml` (+12 -3) 📝 `hack/deploy/02-moonlight-proxy.yaml` (+4 -62) 📝 `hack/deploy/03-misc.yaml` (+240 -1) ➕ `hack/resources/device_classes/README.md` (+6 -0) ➕ `hack/resources/device_classes/default_device_class.yaml` (+11 -0) _...and 49 more files_ </details> ### 📄 Description This PR updates: * Direwolf Operator: * Session Controller is now split into lobby + session controller * removes the gateway api (for now) * Moonlight Proxy: * creates a session and lobby CRD and lets the controller handle it Refactored the code and removed unused sections from the gateway api code. The operator now works on a single node, provided they share an IP with: * moonlight-proxy: handling authentication ports * wolf-agent: handling streaming the application Once the statefulset is ready, the moonlight proxy informs the moonlight client to start the stream. since the moonlight proxy and wolf-agent share the same IP, the moonlight client will be able to successfully stream it. There are a lot of refinments left, but I'm hoping to do those in another PR during the multi-node implementation. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
games-on-whales/fenrir#57
No description provided.