Repository navigation
Conversation
This was referenced Sep 28, 2026
Member
|
/scorecard |
Contributor
Module Scorecard Check
|
| Presentation & Onboarding | Credential Hygiene | Restricted-Environment Readiness | Engineering Quality | Overall |
|---|---|---|---|---|
| 17 / 17 | 16 / 20 | 19 / 20 | 10 / 10 | 93 / 100 |
Drilldown
Track: Utility (desktop-streaming tool — not an AI agent or code editor)
Presentation & Onboarding — 17 / 17
| Criterion | Max | Score | Notes |
|---|---|---|---|
| Configuration-mode examples | 12 | 12 | README documents every major mode: default apply, image-carries-Selkies (install_selkies = false), pinned-version + release_url mirror install, and wayland = true. Each shows a complete, sensible module block. |
| Visual preview | 5 | 5 |  embedded and verified to exist. |
Credential Hygiene — 16 / 20
| Criterion | Max | Score | Notes |
|---|---|---|---|
| Secrets marked sensitive | 16 | 16 | Module has no secret-bearing inputs at all; no inline keys or tokens appear anywhere in the README examples. |
| Non-hardcoded auth path | 4 | 0 | The only relevant line — "Coder authenticates the app and proxies it over one WebSocket" — describes Coder's app-proxy access control, not an external-service credential path (no IAM/OAuth/API-key-helper/AI-Gateway pattern is shown or needed). Doesn't meet the intent of the criterion. |
Restricted-Environment Readiness — 19 / 20
| Criterion | Max | Score | Notes |
|---|---|---|---|
| Mirrorable artifact source | 5 | 5 | release_url variable overrides the base URL used for <release_url>/latest and <release_url>/download/<version>/<file> in install.sh.tftpl; documented in "Installing at Start" with a mirror example. |
| Bring-your-own binary | 10 | 10 | install_selkies = false fully disables install when the image already carries Selkies/Xvfb; documented in "Selkies in the Image" with its own example. |
| Egress transparency | 3 | 3 | Dedicated "## Network Access" section enumerates exact contacted endpoints (<release_url>/latest, <release_url>/download/..., distro package repos) and states runtime traffic stays on Coder's proxy/loopback. |
| Runs without sudo | 2 | 1 | Default install path requires root or passwordless sudo for package installation (core install function) and only prints an error otherwise — no in-script non-root fallback. A complete no-sudo path exists only via the separate install_selkies = false mode (BYOB), so this is "optional-feature sudo with a working fallback" → half credit. Start script itself never uses sudo. |
Engineering Quality — 10 / 10
| Criterion | Max | Score | Notes |
|---|---|---|---|
| Input quality | 6 | 6 | All variables have clear descriptions and sensible defaults; validation blocks on port, share, selkies_version, and release_url. |
| Test coverage | 4 | 4 | main.tftest.hcl covers business logic thoroughly (defaults, healthcheck, KasmVNC-parity vars, desktop command quoting, wayland, BYOB mode, mirrored/pinned release, and all validation rejections). main.test.ts exercises real install/start scripts in containers, including failure and idempotency paths. |
Overall — 93 / 100
Raw 62 / 67 → round(62 / 67 × 100) = 93
Tip
You can run this locally by telling your agent: "review this module against .github/scorecard/SCORECARD.md".
Scored against SCORECARD.md with solstice-1. Language-model scores are advisory.
ehfd
force-pushed
the
selkies-module
branch
2 times, most recently
from
October 2, 2026 07:13
b73c1f6 to
82635c8
Compare
ehfd
marked this pull request as draft
October 19, 2026 16:46
ehfd
force-pushed
the
selkies-module
branch
2 times, most recently
from
October 20, 2026 08:13
313e863 to
3b49b8d
Compare
ehfd
marked this pull request as ready for review
October 21, 2026 05:03
Stream the workspace's desktop to the browser with Selkies behind a coder_app, with the KasmVNC module's variables so a template swaps one for the other. The install script installs what the workspace lacks of Selkies and Xvfb, with PulseAudio where no sound server is installed, from the release's native package and the distribution, as root or with passwordless sudo, or nothing with install_selkies = false; the package is checked against the release's SHA256SUMS, or the digest GitHub records for it, before it is installed. The start script starts selkies-session on the loopback addresses, without a login or TLS of its own, and waits until it answers.
Selkies 2.1.0 runs its tools as subcommands, so the module starts the desktop with `selkies session` rather than `selkies-session`, and takes a workspace to have Selkies only where `selkies session --help` answers as 2.1.0's does: an older selkies takes the word for a stray argument and starts a bare server. After installing, it checks again and says to pick 2.1.0 or later. The session's log is session.log. The defaults test now checks that the latest release is resolved through GitHub's redirect rather than the API's releases/latest; the API stays the digest fallback for a release published without SHA256SUMS.
Author
|
@DevelopmentCats Ready for review again. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
/icon/selkies.svgthe app and scripts show.addons/coder, which this one brings to the registry's conventions) and fix(platforms): Keep OnDemand's tokens in the job, fix Coder's installs, and end what a session daemonizes selkies-project/selkies#421 (the fixes to that module this one carries too).Description
Adds a module that streams the workspace's desktop to the browser with Selkies, a low-latency remote desktop with audio in both directions, gamepads, and GPU encoding, behind a
coder_appthat Coder authenticates and proxies over one WebSocket, on a subdomain or a path.agent_id,port,desktop_environment,subdomain,share,order,group), so a template swaps one for the other or offers both.desktop_environmentalso takes any installed session or a command, and empty starts the workspace's default desktop.selkies session(Selkies 2.1.0 or later) or Xvfb, it installs the release's native package, the distribution's Xvfb, and PulseAudio where the workspace has no sound server, as root or with passwordless sudo. It resolves the latest release from GitHub'sreleases/latestredirect rather than the API, whose 60 unauthenticated requests per hour everything behind one address shares, and checks the package against the release'sSHA256SUMS(or, for a release published before it carried one, the digest GitHub records for the asset) before installing it. A workspace has Selkies only whereselkies session --helpanswers as 2.1.0's does: an olderselkiestakes the word for a stray argument and starts a bare server, so it counts as missing, and after installing the script checks again.install_selkies = falseinstalls nothing, for images that carry Selkies;selkies_versionandrelease_urlpin a release and a mirror.selkies sessionon the loopback addresses without a login or TLS of its own and waits until/api/healthanswers, checked over bash's/dev/tcpso it needs no curl. It reports a launcher that exits first with the end of its log, and leaves a running one alone.coder-utils0.0.2, and data and logs live under$HOME/.coder-modules/selkies-project/selkies/. The newselkies-projectnamespace, the upstream GitHub organization, gets a README and an avatar. The/icon/selkies.svgthe app and scripts show is added to coder/coder in chore(site): add selkies icon coder#30026.Type of Change
Module Information
registry/selkies-project/modules/selkiesv1.0.0Testing & Validation
bun test):main.test.ts6 passed, 0 failed (31 assertions) against a real Docker daemon, a pre-2.1.0selkiesamong them;terraform test11 passed, 0 failed with Terraform 1.16.4, the registry'scoder-utils0.0.2, and provider coder/coder 2.18.0.bun fmt):bun run fmt:ci, typos,go run ./cmd/readmevalidation,scripts/terraform_validate.sh, andscripts/shellcheck_validate.shpass, and the rendered scripts are shellcheck-clean at-S style.codercom/example-desktop(Ubuntu 26.04, XFCE): the install script installedselkies-2.1.0-ubuntu26.04-amd64.deb, checked against the release'sSHA256SUMS, with Xvfb and PulseAudio, using sudo. The app was healthy about a minute after the build. The desktop streamed at 60 fps in all three browsers, both as a subdomain app and as a path app. Through Coder's proxy, a WebSocket upgrade from the page's origin got 101, and one from another site's origin got 403.selkies-2.1.0-debiantrixie-amd64.deb, Xvfb, and PulseAudio installed; healthy 36 s after the workspace was created; 60 fps in all three browsers, from the first connection on.install_selkies = falseon the Selkies desktop image (2.1.0), without sudo: nothing installed; healthy 10 s after the workspace was created; 60 fps in all three browsers.wayland = truewith an NVIDIA GPU: LXQt's Wayland session on Selkies' Wayland backend, captured zero-copy and encoded on NVENC; 60 fps in all three browsers.On Debian 13, Selkies 2.0.0 aborted at the first connection when the agent's
SSH_CONNECTIONreached it while a sound server ran, because pcmflux 2.1.0's wheel bundled a second libxcb. Selkies 2.1.0 carries the fix (selkies-project/pcmflux@a85622b): the first connection to a freshly created Debian 13 workspace streamed normally, as did every later one, with one Selkies process throughout.Related Issues
coder/coder#2106, selkies-project/selkies#64, coder/coder#30026 (the icon), and selkies-project/selkies#421 (the same fixes in Selkies' own Coder module).