rku

Put Roku in your CI/CD pipeline.

Every other platform ships from CI/CD. On Roku, someone still logs into a portal and clicks Publish. rku publishes from GitHub Actions or any pipeline instead.

git push origin main ↳ github actions published atlas-prime-beta

Manual vs. automated

Roku's release lifecycle is manual. All of it.

rku automates the whole thing: beta ships on every commit, production ships through a gate.

Todaymanual, time-consuming
With rkuautomated
Today · BetaBeta releases: someone logs into the portal and re-uploads by hand on every change
With rku · BetaFully automated CI: every merge ships to your beta channel, no human in the loop
Today · ProductionProduction: the same manual portal clicks, with no approval trail
With rku · ProductionGated & triggered: promote to prod on a tag, an approval, or a workflow gate
Today · RenewalBeta channels die every 120 days, so you recreate and reconfigure each one by hand, on Roku's clock
With rku · RenewalRenewal is automatic: the hub detects expired beta channels and recreates them, so the pipeline never stops

How it works

Roku has no publish API. rku is one.

Roku ships channels through a web portal, by hand. rku drives that portal programmatically: you sign in, connect your Roku account, and publish, so shipping a channel becomes a command you can put in CI.

  1. 01 rku login

    Sign in

    Authenticate to rkuhub with GitHub or Google. The CLI stores a short-lived token and refreshes it for you. No secrets to paste.

  2. 02 rku connect

    Connect your Roku account

    A browser opens; sign in to the Roku Developer Portal once (MFA and all). rku captures the session and hands it to the hub. Reconnect only when it actually expires.

  3. 03 rku publish

    Publish

    Upload the build, kick off the publish, and watch it to a result. The same command in your terminal or in CI, with an exit code your pipeline can trust.

In your pipeline

Beta ships on every merge.

Add the rku action to your workflow. Every push to main publishes to your beta channel, and the step fails the build if the publish does. No portal, no human in the loop.

Features

Clicking through the portal doesn’t scale.

Signing in, linking your account, publishing: everything the portal makes you do by hand, rku turns into something repeatable and scriptable.

login

No secrets on disk

rku login signs you in with GitHub or Google and stores a short-lived token it refreshes for you, so no long-lived secret sits on disk.

connect

Connect once

rku connect captures your Roku Developer Portal session in a real browser (MFA and all), and the hub keeps it. Belong to more than one Roku org? Pick the right one.

beta

Beta on autopilot

Point your workflow at a beta channel and every merge ships, no human in the loop. When Roku expires the channel at 120 days, the hub recreates it, so the pipeline never silently stops.

production

Gated production

Beta ships on every commit; production ships when you say so. Gate a publish behind a tag, a manual approval, or a workflow rule, so prod is deliberate, never a 2am portal login.

ci-native

CI-native

The rku action drops into GitHub Actions with a scoped, least-privilege token, and fails the build when a publish fails. Any other runner calls the CLI the same way.

visibility

See what shipped

Every publish is a job. rku channels and rku jobs show what the hub tracks and what ran (succeeded, failed, queued) from the terminal or the dashboard.

FAQ

Roku publishing, answered.

The questions developers ask before they script their first Roku publish.

  • Is there a Roku publishing CLI?

    Yes. rku is a command-line tool that publishes Roku channels straight from your terminal or your CI pipeline. Roku ships no official publishing CLI, so rku is it: sign in, connect your Roku account, and publish a .pkg with one command. Install it with npm i -g @namiml/rku-cli.

  • How do I publish a Roku channel from the command line?

    Install rku (npm i -g @namiml/rku-cli), run rku login and rku connect once to link your Roku account, then publish with a single command: rku publish -c <channel> -p ./app.pkg -v <version>. rku drives the Roku Developer portal for you and exits with a code your pipeline can trust.

  • Can I automate Roku channel publishing in CI/CD?

    Yes. Continuous, hands-off publishing is the whole point of rku. Add the namiml/rku-action to your GitHub Actions pipeline and every merge ships to Roku automatically: beta on every commit, production behind an approval gate. A failed publish fails the build, so a broken release never ships silently, with no manual steps in the Roku portal.

  • Does Roku have an official CLI or publish API?

    No. Roku provides no public API and no official CLI for publishing channels; it is normally a manual process in the Roku Developer web portal. rku automates that portal programmatically, which is how it gives you a rku publish command for the terminal and CI.

Get started

Put your next Roku release in CI/CD.

Connect your Roku account once, drop the action into your pipeline, and every merge ships to Roku: beta automatically, production through a gate.