Cobalt README

The project's README from github.com/BandarLabs/Cobalt. As one markdown file: README.md.

Cobalt

Apps and an SDK for Kobo e-readers.

CI Publish apps Latest release License

Cobalt is an open-source application platform for Kobo. It provides a launcher, an App Store, a Rust SDK, a runtime with capability isolation, and a Clara BW simulator.

See the public roadmap for the product outcomes Cobalt is working toward and the principles used to choose them.

After one USB installation, users can install, update, and remove signed apps over Wi-Fi. App releases are independent from Cobalt platform releases, so a new app can appear in Store without reinstalling or updating Cobalt.

A real Kobo Clara BW running Audiobook Studio, Gutenbird, Terminal, Components, Hacker News, Sidekick, AI Command Center, Feeds, Tic-tac-toe and audio playback, followed by the full App Store catalog and Sudoku being installed, played, removed and reinstalled over Wi-Fi
Recorded on a Kobo Clara BW at 3× speed: apps, Store discovery, and the complete Sudoku install lifecycle.

[!IMPORTANT] The Kobo Clara BW N365 (device code 391), Kobo Elipsa 2E N605 (device code 389), Kobo Clara HD N249 (device code 376), Kobo Libra 2 N418 (device code 388), Kobo Clara Colour N367 (device code 393), Kobo Libra Colour N428 (device code 390), and Kobo Libra H2O N873 (device code 384) are fully hardware-tested on the firmware and kernel versions in the support matrix. The 2025 Kobo Clara BW P365 (device code 395) hardware refresh is also supported: its measured panel, touch, firmware, and kernel facts match the attended-tested N365 Clara BW.

Cobalt runs on other Kobos as well. A device or a firmware branch that is not in the matrix is not refused: Cobalt shows what has not been tested about it and asks whether to continue, once. It is untested rather than unsupported, and the difference is worth reading in the device support matrix before installing. It is an independent project and is not affiliated with Rakuten Kobo.

[!TIP] Own an untested Kobo? Help get it into the matrix. No coding is required. Join an existing device thread or create a new one with your exact model, firmware, and whether you can run attended tests. Start with read-only checks; run panel tests only against the commit named by a maintainer. See Contributing.

Features

How it differs

NickelMenu adds actions to Kobo's stock menu. KOReader and Plato are reading apps. Cobalt is a platform for building and installing apps.

Cobalt handles the common parts: screens, app lifecycle, drawing to the e-ink display, partial refreshes, touch input, device access, process isolation, testing, and signed installs. App authors can focus on their app instead of building those parts again. See the FAQ for a fuller comparison.

Apps

Every screenshot below is a real capture from a Kobo Clara BW. Store manages the installable applications; Settings and Terminal remain protected system utilities.

Cobalt launcher showing a grid of applications
Launcher
Opens installed apps and always keeps a route back to the Kobo reader.
Cobalt App Store listing installed and available applications
App Store
Browses signed apps and installs, updates, removes, and reinstalls them over Wi-Fi.
A complete 81-cell Sudoku game on a Kobo Clara BW
Sudoku
A Store-only touch game that also proves delivery of an app absent from the platform package.
An audiobook player with cover art, position and transport controls
Audiobook Studio
Researches, writes, narrates, and plays an original audiobook.
A shelf of book covers from an OPDS catalogue
Gutenbird
Reads any OPDS library: Project Gutenberg, Standard Ebooks, Open Library, or one you add.
A ranked list of Hacker News stories
Hacker News
Top, New, Ask, and Show stories with complete comment threads.
A list of subscribed feeds and articles
Feeds
Discovers a site's feed and presents its articles without the browser layout.
A numbered daily news brief
Daily Brief
Collects the day's stories while the reader is using another app.
An AI answer displayed as readable text on the panel
AI Command Center
Asks a question and turns the answer into touch-friendly reading.
A coding agent request with tappable responses
Sidekick
Lets a reader approve or deny requests from coding agents.
A shell and touch keyboard on the Kobo display
Terminal
A panel-native shell with keys that send input immediately.
Cobalt typography and UI components
Components
Shows the UI toolkit's controls, layouts, typography, and states.
Battery status and hardware facts
Settings
Manages connectivity and hardware, and keeps platform updates separate from Store.
A persistent to-do list with completed items
Todo
A persistent list with touch entry and completed-item states.
A completed game of tic-tac-toe
Tic-tac-toe
A two-player touch game using partial refreshes for individual cells.
The newest machine learning preprints on a Kobo Clara BW, newest first
Preprints
Browses and searches arXiv preprints, keeps them for offline reading, and sets their mathematics as type.
The letter S filling the panel while the beacon sends it
Morse
Sends a typed message on the front light, a letter at a time, drawn across the panel as it goes.
The Kobo hall sensor responding to a magnet
Magnet
Locates the hall sensor behind the bezel and reports its changes.

Every app in the Store

Every application published to the Cobalt App Store, generated from the same manifests the app pages come from by tools/generate-app-pages.mjs.

An answer displayed for touch-friendly reading on a Kobo
AI Command Center
Ask a question, then read and navigate the answer with touch controls.
An audiobook player with cover art and playback controls on a Kobo
Audiobook Studio
Turn a topic into an original narrated audiobook and listen on your Kobo.
Backgammon board on a Kobo after Black opened with 4 and 6, with dice, cube and match score.
Backgammon
Play complete solo or pass-and-play backgammon on one Kobo.
A labelled collage of public-domain bird plates filling a Kobo screen.
Birds
Show the birds heard by BirdNET-Go on your Mac or Linux computer.
Cobalt typography and interface components on a Kobo
Components
See every Cobalt UI component on the device in one reference app.
Crossword grid on a Kobo with the first answer filled in and numbered cells.
Crossword
Solve a compact touch-first crossword with clue navigation.
A numbered daily news brief on a Kobo
Daily Brief
Build a daily news brief in the background while you use other apps.
Deck paired with a computer, showing Test, Format and Deploy command pads.
Deck
Turn your Kobo into a remote control for your computer.
A Miniflux article open on a Kobo with text-size and front-light controls.
Digest
Read your Miniflux feeds anywhere.
A followed work in Fanshelf naming its author, fandom, rating and chapter count, with Read and Check updates controls.
Fanshelf
Save public AO3 works to a shelf made for offline reading.
Subscribed feeds and articles in the Feeds app on a Kobo
Feeds
Follow feeds, search saved articles and read offline with images.
Fieldbook outing screen tallying an American Robin from a pushed field pack.
Fieldbook
Log bird sightings anywhere and build your life list.
A Flashcards review showing the revealed answer with Again, Hard, Good and Easy rating buttons.
Flashcards
Review flashcards anywhere, even without Wi-Fi.
A full-area monochrome photograph in Frame on a Kobo Clara BW.
Frame
Show computer-pushed monochrome photos in awake or scheduled slideshow modes.
Grimoire initiative order showing the active combatant and round counter on a Kobo.
Grimoire
Browse offline SRD references and manage tabletop combat.
A shelf of books from an OPDS library on a Kobo
Gutenbird
Browse OPDS libraries and read their books on your Kobo.
Habits today screen on a Kobo Clara BW, with daily and weekday streak tasks.
Habits
Track daily and weekday habits with local streaks.
A ranked list of Hacker News stories on a Kobo
Hacker News
Read Top, New, Ask, and Show stories with complete comment threads.
Home Panel tile grid on a Kobo showing four Home Assistant tiles with the last refresh time.
Home Panel
Control saved Home Assistant tiles from a low-power panel.
A solved Inkling five-letter daily puzzle with grayscale shape feedback.
Inkling
Solve a fresh five-letter puzzle each day.
Kitchen Card showing a large cooking instruction with Steps and Ingredients tabs.
Kitchen Card
Keep Mealie recipes handy in a counter-friendly cooking view.
A book from a calibre-web library open on a Kobo, with text-size and front-light controls and the page count.
Library
Browse and read books from your calibre-web library.
Lichess on Kobo with Account/Games and Puzzles tiles plus rapid and classical time controls.
Lichess
Play Lichess games, challenge players, solve puzzles, or play offline.
Logic Pack's Minesweeper board after a revealed cell and contradiction check.
Logic Pack
Play four familiar logic games offline.
The Kobo hall sensor responding to a magnet
Magnet
Find the hall sensor behind the bezel and watch it respond to a magnet.
A letter filling the Kobo screen while the front light sends Morse code
Morse
Type a message and send it in Morse code with the front light.
Music Stand showing the Prelude from Bach's Cello Suite No. 1 as a full-page score.
Music Stand
Read music scores with setlists and half-page turns.
Needles pattern screen with row and repeat counters and a large +1 row button.
Needles
Count rows, browse Ravelry collections, and read your synced patterns offline.
Actual Nonograms simulator capture showing a selected square and its matching row and column clues.
Nonograms
Solve 18 original picture puzzles with attached clues, saved undo and larger grids.
Panels library in the Clara BW simulator showing the original A small garden cover and saved page 2 of 4.
Panels
Read comics added from your computer or Komga library.
Paperterm sharing a real laptop terminal in portrait, with its keyboard open on a Clara BW simulator.
Paperterm
Pair with a computer to mirror a terminal session on e-ink.
Reversi opening board showing four legal moves and touch controls.
Parlor
Play touch-first Reversi together on one Kobo.
Parser's book-like transcript after taking a brass lamp and entering the garden.
Parser
Play an original interactive story without Wi-Fi.
Post inbox showing completed Hermes letters, newest first.
Post
Read and reply to letters from Hermes.
The newest Artificial Intelligence preprints listed newest first in the Preprints app on a Kobo
Preprints
Browse and search arXiv, keep preprints, and read their HTML versions on your Kobo.
Pub Quiz pass-around question with four large answer choices for Ada.
Pub Quiz
Play offline solo or pass-around trivia rounds.
Read Later setup screen showing Wallabag credential instructions.
Read Later
Read your Wallabag articles anywhere.
Sidekick multi-agent board showing distinct coding-agent sessions and pending approvals.
Sidekick
Answer coding-agent permission prompts from your Kobo.
Reading a paper with structured layout and Zotero metadata on a Kobo
Stacks
Browse Zotero collections, read metadata and indexed paper text, and keep papers available offline.
An original Sudoku puzzle with pencil notes, selected keys and a highlighted row and column
Sudoku
Play 36 original Sudoku puzzles with pencil notes, undo and saved games.
Sync folders showing receive-only vault, frame, books, and send-only out.
Sync
Choose folders and a battery-friendly sync schedule.
A completed game of tic-tac-toe on a Kobo
Tic-tac-toe
Play tic-tac-toe together on one Kobo.
A to-do list with completed items on a Kobo
Todo
Keep a simple to-do list that stays on your Kobo.
Vault home on a Kobo with four synced notes and Browse, Tags, Recent and Search rows.
Vault
Browse your notes by folder, tag, link, and backlink.
Verses displaying a public-domain daily poem in a spacious Kobo reading layout.
Verses
Read a public-domain poem each day.

Suggest an app

What would you use on your Kobo? It could be a game, a reading tool, a home-automation control, or a replacement for an Android or iOS app. Add it to the app request thread.

Install

On macOS or Linux, install the stable release:

curl -fsSL https://bandarlabs.github.io/Cobalt/install.sh | sh

This canonical discovery URL is published by GitHub Pages from stable main:/docs; it becomes available with the first stable promotion containing the installer. It trusts GitHub Pages HTTPS for the bootstrap script itself. After it starts, every downloaded executable and device package is covered by the signed release manifest and SHA-256 checks. For pre-execution verification of install.sh, use the recommended signed-bootstrap procedure.

The installer supports macOS Intel and Apple Silicon, and Linux x86_64 and arm64. It installs the stable Kobo platform only. The platform Beta channel is enabled exclusively in Cobalt Settings after first launch, or through the developer/source workflow. Settings shows the installed version and current channel, confirms channel changes explicitly, and verifies signed Beta platform metadata. Returning to Stable needs no USB connection and preserves installed apps, state, and secrets.

Update the installed host command independently:

kobo update
kobo update --channel beta   # explicit host CLI beta; never writes to a reader

The host CLI channel does not select the Kobo platform channel. Device Beta updates remain an explicit choice in Cobalt Settings.

Rerun the same command to update. Restart the reader, wait one minute for NickelMenu's failsafe, then open Cobalt from Kobo's menu. Future applications are installed from Store over Wi-Fi.

If you already use NickelMenu, Cobalt is added to it; existing entries are left alone.

See docs/INSTALL.md for the complete walkthrough and recovery, uninstall, and source-build instructions.

App Store

Store reads a signed catalog from the Stable app-catalog GitHub release, or the isolated app-catalog-beta release when the owner enables Beta updates. Each package contains one ARM executable and a signed canonical manifest. The runtime verifies the catalog, package, installed manifest, and binary before launch.

Store is the only app-management surface. The applications bundled with the first 0.2.0 platform install appear as installed, can be removed and reinstalled in the same session, and can be updated in place without creating a second launcher entry. Platform utilities such as Settings and Terminal are shown as installed system apps and cannot be removed.

Open Install links in Store to link a phone or computer without an account. The Install button on any Cobalt app page then sends an encrypted request to that Kobo. If the reader is offline, reconnect it and open Store within 72 hours to continue.

Apps are published automatically when an app PR is merged into main. Publishing an app does not require changing the Cobalt version or creating a platform release.

Sudoku remains Store-only and is intentionally absent from the USB platform package, so installing it verifies delivery of an app that was not already on the reader.

Save an app export to your computer

When an app offers Ready for your computer, receive its prepared copy using Cobalt's existing reader connection:

kobo export --app APP --device reader.local --out "$HOME/Downloads"

Replace APP with that app's ID. The command checks the complete file before saving, preserves the reader's original, and gives conflicting local names a numbered suffix. Retry the same command after a connection or storage failure. App adoption is still in progress. See the export guide for supported formats and simulator use.

Build an app

cargo install --path crates/kobo-cli
kobo new my-app
cd my-app
kobo dev

kobo dev runs the app in the Clara BW browser simulator. Set KOBO_SIM_PROFILE=libra-2-388 or KOBO_SIM_PROFILE=elipsa-2e-389 to exercise the larger supported panel geometries with the same renderer and diagnostics. Start with the SDK documentation; the repository also keeps the deep implementation guide.

What the SDK provides

Area Application-facing support
App model Ordinary Rust binaries with declarative screens, named actions, lifecycle callbacks, and runtime-managed Back navigation
E-ink UI Measured text, rows, tiles, pictures, dialogs, keyboards, terminal views, pagination, and full or partial refresh planning
Network and credentials Asynchronous HTTPS fetches and posts, ranged downloads, bounded responses, and named secrets whose values never enter the app
State and background work Atomic per-app keyed storage, cancellable tasks, foreground/background lifecycle events, and scheduled wake capabilities
Device and media Capability-gated battery, cover, frontlight, Wi-Fi, Bluetooth, and audio requests
Tooling App scaffolding, the browser and native runtime simulators, layout diagnostics, deterministic failure scenarios, packaging, and device deployment

Apps request services through the SDK instead of opening device resources directly. The runtime can deny a request because it was not declared, is too expensive for the current battery state, or is unsupported, and each refusal is returned to the app as a value it can present or recover from.

See the SDK docs for the application model, UI components, runtime services, capabilities, developer-facing crates, the guided companion entry point, and the CLI command reference.

Contributing apps

App contributions are regular pull requests:

  1. Add the app as a workspace package under apps/<app-id>/.
  2. Add its release metadata to apps/catalog.json.
  3. Add unit tests and layout checks for every affected supported profile.
  4. Run the app in the browser and runtime simulators.
  5. Run it on a physical, fully supported Kobo and attach a GIF, video, or photos to the pull request.
  6. Include one clean panel screenshot for the app README and generated website install page.
  7. Open a pull request.

After the PR is reviewed and merged, the Publish apps workflow builds every registered app for ARM, signs the packages and catalog, and updates the fixed Store channel. App versions are independent from the Cobalt platform version.

See docs/CONTRIBUTING_APPS.md for metadata, capabilities, testing, and release details.

Repository layout

Path Purpose
apps/ Store applications and release registry
examples/ Built-in applications and SDK examples
crates/kobo-sdk Public application SDK
crates/kobod Device runtime
crates/kobo-ui Layout and e-ink renderer
crates/kobo-sim Clara BW browser/runtime simulator
crates/kobo-app-store Signed package and catalog formats
crates/kobo-cli Setup, build, simulation, packaging, and release tools
docs/ Installation, device, app publishing, and development guides

Development

cargo test --workspace --all-features
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo fmt --all --check
cargo run -p kobo-cli -- run --sim --app sudoku

Additional guides:

Safety and support

Cobalt does not replace Kobo's boot chain. Device support is explicitly gated by hardware and firmware identity, and a reboot returns to the stock reader. The first installation still modifies files on the user storage partition and is provided without warranty.

Normal panel-write entry points require one of the exact hardware and firmware combinations in the device support matrix. Do not treat a read-only profile match as permission to install: normal use requires the profile's owner-attended display, touch, exit, and recovery evidence to be complete.

License

GNU Affero General Public License v3.0. See LICENSE and THIRD-PARTY.md.

Cobalt (BandarLabs/Cobalt)

Searching Database…

401 ·GitHub
这是什么?Cobalt 是一个面向 Kobo 电子阅读器的开源应用平台:它包含一个启动器、一个应用商店、一个 Rust SDK,以及一个带能力隔离的运行时,能把阅读器变成一台可以运行真正应用的设备。
那 Cobalt 是装在 Kobo 本身上,还是一款电脑软件?它装在 Kobo 上:通过 USB 安装一次,Cobalt 就加到阅读器里了,之后安装、更新和卸载应用都可以通过 Wi-Fi 完成。电脑只在初次安装和开发时才需要。
我怎么把它装到我的阅读器上?在一台 macOS 或 Linux 电脑上运行 install.sh 引导脚本,并用 USB 连接 Kobo。然后重启阅读器,等待约一分钟让 NickelMenu 的失效保护生效,再从 Kobo 的菜单里打开 Cobalt。
除了电子阅读器,我还需要什么?需要一台 macOS 或 Linux 电脑来做一次性的 USB 安装(Intel 或 Apple Silicon 的 Mac,x86_64 或 arm64 的 Linux 都可以)。应用是静态链接的 ARMv7 二进制文件,所以设备上不需要任何包管理器。
我的 Kobo 型号能用吗?Clara BW、Clara HD、Clara Colour、Libra 2、Libra Colour、Libra H2O、Elipsa 2E,以及 2025 年改款的 Clara BW 都通过了完整的硬件测试。其他 Kobo 也能运行,但 Cobalt 会提醒你一次该设备未经测试。
没有 Wi-Fi 也能用吗?阅读和游戏都可以:Flashcards 不用 Wi-Fi 也能用,Lichess 和 Logic Pack 支持离线玩,Gutenbird、Feeds、Preprints 和 Stacks 可以把书籍、文章和论文保存下来离线阅读。
安装和同步应用需要注册账号吗?不需要账号:商店的安装链接通过加密的二维码或配对码把手机或电脑与设备配对,文件夹同步则通过你自己的私有 Syncthing 节点完成,而不是走云端。
从商店里能装哪些应用?有 45 个经过签名的应用:Hacker News、Lichess 国际象棋、用于 Project Gutenberg 等 OPDS 图书馆的 Gutenbird、配合 Wallabag 的 Read Later、管理 Zotero 的 Stacks、获取 arXiv 论文的 Preprints、离线 Flashcards、数独等游戏,还有一个 Home Assistant 面板。
它和 KOReader 或 NickelMenu 有什么不同?NickelMenu 只是在 Kobo 原生菜单里添加一些操作,KOReader 和 Plato 则是阅读软件。Cobalt 是一个用来构建和安装应用的平台:它负责屏幕、应用生命周期、电子墨水屏绘制、局部刷新、触摸输入、进程隔离和签名安装,让开发者可以专心做自己的应用。
我可以自己为它开发应用吗?可以,用 Rust SDK 就行:应用就是普通的 Rust 二进制程序,基于一套声明式的电子墨水屏 UI 工具包构建,运行 'kobo dev' 就能在你电脑上的 Clara BW 浏览器模拟器里调试。合并一个应用 PR 就会自动发布到商店,不需要等 Cobalt 发新版本。
商店里的应用安装起来安全吗?每个应用都以独立的非特权进程运行,并针对网络、存储、音频和前光做逐应用的能力检查。商店是唯一的应用管理入口,而且运行时在每次启动前都会校验目录、安装包、清单文件和二进制文件。
Creator
BandarLabs
Size
267.9 MB
Stars
401
Age
2mo
Commits · 90 Days