Kobo can run apps now
Kobo Now Supports Applications
Cobalt is a comprehensive, open-source ecosystem designed to bring application functionality to Kobo e-readers. It consists of a dedicated launcher, a verified App Store, a Rust-based SDK, and a secure runtime environment that isolates every application within its own unprivileged process.
Once installed, the management of apps—including installation, updates, and removal—is handled directly on the device via Wi-Fi.
Disclaimer: This project is not affiliated with Rakuten Kobo.
🛠️ Technical Architecture
Every application is deployed as a static ARM binary. To ensure system stability and security, these binaries run as unprivileged processes on the device's stock hardware.
Security & Distribution
The App Store manages the lifecycle of these binaries over Wi-Fi. Before any application is permitted to launch, the system performs a strict signature verification.
The verification logic can be represented as:
📱 The App Ecosystem
The platform distinguishes between "Platform" apps (shipped with the install) and "Store" apps (versioned independently).
| Application | Primary Function |
|---|---|
| Launcher | The main hub; opens apps and provides a path back to the stock Kobo UI. |
| App Store | Handles the Wi-Fi installation, updating, and removal of signed packages. |
| arXiv | Renders HTML from arXiv (post-Dec 2023) including math and tables. |
| Sidekick | A remote interface for coding agents (e.g., Claude Code) with touch-input answers. |
| Sudoku | A Store-exclusive app used to verify the USB-independent delivery system. |
| Morse | Communicates via the front-light, flashing messages across the panel. |
| Audiobook Studio | A full suite for researching, writing, narrating, and playing audiobooks. |
| Gutenbird | An OPDS client for Project Gutenberg, Standard Ebooks, and Open Library. |
| Hacker News | Accesses Top, New, Ask, and Show threads with full comment support. |
| Feeds | A clean RSS reader that strips site layouts for better e-ink reading. |
| Daily Brief | Background aggregator that collects news while other apps are active. |
| AI Command Center | Converts AI-generated answers into a touch-optimized reading format. |
| Terminal | A native shell implementation with immediate-input keys. |
| Components | A showcase of the UI toolkit's typography, layouts, and states. |
| Settings | Manages hardware, connectivity, and platform-level updates. |
| Todo | A persistent task list with touch entry and completion toggles. |
| Tic-tac-toe | Local multiplayer game utilizing partial e-ink refreshes. |
| Magnet | A utility to detect and report changes from the bezel's hall sensor. |
💻 Developer Guide
Developers implement the KoboApp trait to define their application. The runtime manages the heavy lifting: layout, e-ink refresh cycles, navigation, and the app lifecycle.
Capabilities & Constraints
Access to the following is capability-gated:
- Network Storage Audio Frontlight Wi-Fi
If a request is denied, the runtime returns a value that the app must handle gracefully.
Development Workflow
Example Implementation
To get started, use the CLI:
kobo new my-app cd my-app kobo dev
use kobo_sdk::{ ActionId, Context, KoboApp, ScreenBuilder };
#[derive(Default)]
struct Hello { taps: u32 }
impl KoboApp for Hello {
fn on_start(mut self, ctx: mut Context) {
self.show(ctx);
}
fn on_action(mut self, ctx: mut Context, a: ActionId) {
if a == kobo_sdk::action_id("tap") {
self.taps += 1;
}
self.show(ctx);
}
}
impl Hello {
fn show(self, ctx: mut Context) {
let screen = ScreenBuilder::new("hello")
.top_bar("Hello")
.heading(format!("{} taps", self.taps))
.button("tap", "Tap me")
.build();
ctx.set_screen(screen);
}
}
fn main() {
let app = Hello::default();
let _ = kobo_sdk::run("hello", app);
}
🚀 Installation & Deployment
Setup Checklist
- Clone the repository:
git clone https://github.com/BandarLabs/Cobalt.git - Enter directory:
cd Cobalt - Add ARM target:
rustup target add armv7-unknown-linux-musleabihf - Execute setup:
cargo run -p kobo-cli -- setup - Restart device and launch Cobalt from the menu.
Detailed recovery steps are available in docs/INSTALL.md.
Publishing Apps
- Add the app as a workspace package in
apps/app-id/. - Register the app in
apps/catalog.json. - Implement unit and layout tests; verify in browser/runtime simulators.
- Merge the PR the automated workflow signs and publishes the app.
⚠️ Safety and Compatibility
Install on any Kobo model Only install on models with a reviewed, hardware-tested profile.
- Hardware Safety: Device writes are restricted to exact hardware/firmware matches. A reboot will always return the device to the stock reader state.
- Risk: The initial installation modifies the user storage partition and is provided without warranty.
- Updates: The Cobalt platform updates via Settings on a separate channel from the App Store. All transactions are recovery-safe; interrupted updates will not brick the device.