rku

Finally. Roku publishing made easy.

From your terminal or your CI workflow.

rku publish -c acme-prod -p ./acme.pkg -v 4.12.0 ↳ ✓ published to 'acme-prod'

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 — sign in, connect your Roku account, 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.

A publish, end to end

Honest output. No emoji. No surprises.

rku tells you what happened and what to do next, then gets out of the way — the same run, whether you type it or CI does.

Features

Built for shipping, not clicking.

Everything the portal makes you do by hand — signing in, linking your account, publishing — rku turns into something repeatable and scriptable.

login

Sign in, not secrets

rku login signs you in with GitHub or Google and stores a short-lived token it refreshes for you — no long-lived secret sitting 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.

publish

One command to publish

rku publish uploads the build, kicks off the publish, and waits for the result. It exits non-zero when a publish fails or needs a reconnect, so CI can trust it.

ci-native

CI-native

Scoped, least-privilege rku_ci_ tokens and clean exit codes drop straight into your pipeline — the same publish, in your terminal or on a runner.

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.

hosted

Channels that don’t lapse

rkuhub runs the same engine, hosted: a dashboard at hub.rku.dev that tracks channel expiry and recreates beta channels before they go dark — no silent outages.

Get started

Ship your next Roku build from the terminal.

Install the CLI, sign in, connect your Roku account, publish. Minutes to your first scripted publish.

npm i -g @namiml/rku-cli