Finally. Roku publishing made easy.
From your terminal or your CI workflow.
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 — sessions, fixtures, and publish jobs — so shipping a channel becomes a command you can put in CI.
- 01
rku loginCapture a session
Authenticate against the Roku Developer Portal once. rku persists the session so login only happens when it actually expires.
- 02
rku fixture diffReconcile against a fixture
Your channel config lives as a fixture in your repo. rku shows the pending detail changes before anything ships.
- 03
rku pushPublish & watch
Upload the build, verify the SHA against the manifest, and stream the reconcile log live until the version is in review.
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 — sessions, config, publishing, expiry — rku turns into something repeatable, reviewable, and scriptable.
sessions
Sessions that survive
Capture a portal session once; rku reuses it across runs and only prompts to reconnect when ks.session actually expires.
fixtures
Fixtures & diffs
Channel config lives in your repo as a fixture. Reconcile every channel against it on each push, and review the diff first.
ci-native
CI-native
Scoped rku_ci_ tokens and machine-readable --json output drop straight into your pipeline. The same run, in your terminal or on a runner.
jobs
Publish jobs you can watch
Every publish is a job. Stream its reconcile log live, or check status later — published, running, failed, queued.
auto-recreate
Channels that don’t lapse
rku tracks channel expiry and recreates channels inside the lead window before they go dark — no silent outages.
tokens
Scoped tokens
rku_live_, rku_ci_, rku_test_ — environment-prefixed, greppable in code, scannable in logs. Scope is obvious at a glance.
Get started
Ship your next Roku build from the terminal.
Install the CLI, capture a session, push. Two minutes to your first scripted publish.
npm i -g @namiml/rku