安装后需重启阅读器并等待约一分钟,再从 Kobo 菜单打开 Cobalt;Kobo 5.x 固件不受支持,未测试机型启动前会提示确认;部分应用(如 Frame、Music Stand、Vault)需要先在电脑上运行安装脚本开启 SSH 才能传文件。
Cobalt
BandarLabsAGPL-3.0活跃维护用 Rust 写的 Kobo 墨水屏阅读器 SDK,能开发应用并搭建应用商店,还内置 RSS、OPDS 和 Lichess 等阅读扩展。
SDK for building apps & an app store for your Kobo eInk reader
curl -fsSL https://bandarlabs.github.io/Cobalt/install.sh | sh运行于 Kobo 电子书阅读器,已在 Clara BW、Clara Colour、Clara HD、Elipsa 2E、Libra 2、Libra Colour、Libra H2O 上测试;不支持 Kobo 5.x 固件。README 未提及显存或 CPU 要求。
给 Kobo 电子书阅读器加装应用商店和 Rust SDK,让墨水屏也能跑第三方应用
用 Rust 写的 Kobo 墨水屏阅读器 SDK,能开发应用并搭建应用商店,还内置 RSS、OPDS 和 Lichess 等阅读扩展。
核心能力
- 内置启动器、应用商店和设置,应用可经 Wi-Fi 安装更新
- 每个应用运行在独立受限进程中,按声明能力申请设备服务
- Rust SDK 提供声明式屏幕、墨水屏排版与刷新规划
- 自带浏览器模拟器,无需真机即可开发和调试应用
- 安装脚本同时开启 SSH,支持从电脑推送文件给应用
容易踩的坑
- beta-v0.3.36Cobalt 0.3.36 betapre-release最新正式版2026-11-08 · 2026-11-08 14:03 UTC
Send web pages from your computer to the reader as clean books, with an Articles shelf in Books and a Notifications list in the launcher.
Before you update
- To use Sync in Books, run
kobo sidekick initagain on your computer so it pairs Books too, and keepkobo sidekick rungoing.
Added
kobo clipturns a web page into an EPUB the way a browser's reader mode would: the article, its headings, figures and captions, without menus, banners, share bars or comments. Pictures are fitted to the panel and greyed, or kept in colour with--colour(#354).kobo clip --laterqueues an article andkobo clip syncsends what is waiting.kobo clip installsets up the Send to Kobo browser extension (#356).- An Articles shelf in Books, unread first, each with its site and when it arrived. Mark read, Archive and Delete are in the item menu, and Delete asks first (#356).
- Sync in Books asks your computer for waiting articles and says what happened: "2 articles arrived", "Nothing new", or "Your computer is not answering". Books also checks quietly when it opens (#356).
- A notice under the status bar when an article arrives. It leaves after 4 seconds, never takes a tap meant for the app, and never covers a page you are reading (#353).
- A bell in the launcher's top bar opens a Notifications list grouped by day, with New on unread rows and Clear all (#353).
Fixed
- A Store publication that built one app shipped that app's previous binary. Lichess 1.0.25 was affected (#355).
- A sync from the computer stops before its deadline, and the reader hears back counts only, never titles (#356).
Store
- Lichess 1.0.26: a game against the computer names your side You instead of your Lichess username (#352, #355).
- Daily Brief 1.0.18: no visible change (#356).
Docs
- A new 37-second front-page tour recorded on a Clara BW, with a chess game against the computer (#351, #358).
- Every published screenshot retaken on 0.3.35 (#349).
Not yet tested on a reader
- Notices, the Notifications list, the Articles shelf and Sync have only run in the simulator so far.
Full changes: https://github.com/BandarLabs/Cobalt/compare/beta-v0.3.35...beta-v0.3.36
- To use Sync in Books, run
- beta-v0.3.35Cobalt 0.3.35 betapre-release2026-11-07 · 2026-11-07 20:27 UTC
查看更新说明
Every feature of every app and of Settings driven in the simulator, and fixes for what that found.
Changed
- Settings says what Wi-Fi is doing: looking, joining, disconnecting, or why a join failed. The Battery page stays live (#346).
- Bluetooth says it is turning on, and that it starts once per boot (#346).
- Preprints, Feeds, Daily Brief and Fanshelf say dates the way people do (#346).
- The shared reader says "This is the end." as information, numbers bookmarks by page, and Back to the book closes every panel (#346).
Fixed
- A refused switch left Software update stuck on a failed check (#346).
- Launcher tile names broke inside a word, and the bottom tabs did not fit at large text sizes (#346).
- Grimoire stopped responding after one party member was opened (#346).
- Frame's shelf could not be repaired once a photo was missing.
kobo frame pushnow repairs it (#346). - Comics: Move page and Rotate page fell off the panel (#346).
- Daily Brief overflowed when refreshing over a saved brief (#346).
- Readeck lost articles with normal-length IDs (#346).
- Kitchen Card's timer never ended. It now counts against the clock (#346).
Store
- Each fixed app carries a new version with a release note (#346).
Full changes: https://github.com/BandarLabs/Cobalt/compare/beta-v0.3.34...beta-v0.3.35
- beta-v0.3.34Cobalt 0.3.34 betapre-release2026-11-07 · 2026-11-07 00:12 UTC
查看更新说明
Books set as a printed book is, every app with a launcher mark of its own, and the fixes from a walk through every app on a Clara BW.
Before you update
- Every Store app is rebuilt for protocol 18 and needs Cobalt 0.3.34. Update Cobalt first, then the apps.
Added
- Emphasis is set in Literata's own italic instead of slanted upright letters (#339).
- Apps can indent a block and open a paragraph with a drop initial. Verses uses both to set a poem the way a printed book of verse does (#339).
- Every app has a launcher mark that says what it is for, and no two share a silhouette. Readers on 0.3.33 and older keep the marks they had (#345).
- Readers with no measured profile, such as the Forma, Clara 2E and Nia, ask you to touch two dots on first launch and calibrate touch from them (#340).
when::spokenin the SDK says a date the way people do (#344).
Changed
- A book opens on the whole panel, as on the stock reader. A touch at the top calls the bar back, the sides turn the page, and the page number moved into the Aa panel (#338).
- Notices, dialogs, menus and controls share one look: rounded notices with a mark, dialogs centred clear of the content, and menus set as rows (#344).
- Frame, Panels and Music Stand open straight to the picture, page or score with nothing over it (#338).
- In the Store, tapping an installed app opens it. Its page, with Uninstall, is behind the mark at the row's edge or a press and hold (#338).
Fixed
- Pages ended a quarter early on the reader, because apps measured in one font and the runtime drew in another (#338).
- Words ran together after an italic run ("veryremarkable"), a space appeared after a line-end hyphen ("daisy- chain"), and paragraph spacing added up instead of collapsing (#338).
- A tap off the type or light panel closed the book. It now puts the panel away first (#338).
- Tools such as
kobo taprefused a reader on firmware 4.46 (#337). - Unsupported readers (Elipsa, Sage and the i.MX50/6SL generation) are refused plainly by
kobo setupand on the reader, before anything is installed (#340).
Store
- All apps rebuilt for protocol 18, each with its new mark (#339, #345).
- Fixes in Verses, Crossword, Vault, Post, Magnet, Daily Brief, Kitchen Card and Lichess, among others (#338).
Docs
- Every README, guide and site page checked against the code and corrected (#341).
Not yet tested on a reader
- Touch calibration and the other changes for unmeasured models have not run on a Forma, Clara 2E, Nia, Elipsa or Sage.
Full changes: https://github.com/BandarLabs/Cobalt/compare/beta-v0.3.33...beta-v0.3.34
- beta-v0.3.33Cobalt 0.3.33 betapre-release2026-11-05 · 2026-11-05 15:27 UTC
查看更新说明
Audiobooks plays what is on the reader, in every common format, and Books no longer closes on letters no reader font carries.
Before you update
- Audiobooks needs Cobalt 0.3.33. Update Cobalt first, then the app.
Added
- Audiobooks plays MP3, M4B, M4A, Ogg Vorbis, Opus, FLAC and WAV copied into an
Audiobooksfolder, one file or a folder of numbered parts per book. It shows each book's cover and chapters, plays at 0.5× to 3× with the pitch unchanged, has a sleep timer, and keeps your place in every book (#334). - A ten-hour book costs the same memory as a short one. Tracks are no longer capped at under three minutes (#334).
- The browser installer lists the apps on the reader, removes one, and can put the reader on the Beta channel. Until this reaches Stable, the Beta choice still installs the stable archive (#335).
Changed
- The tab marker is as wide as the tab's name, verbs in an action bar have short dividers between them, and the first section under the top bar no longer draws a second hairline (#333).
- Threaded replies draw their depth rules unbroken (#333).
Fixed
- Books closed on a page with a letter no reader font carries, such as the Hebrew on Moby-Dick's Etymology page. The letter now draws as a box and the book stays open (#331).
- Contents, Notes, Links and marked passages showed one screen and dropped the rest. They now page, and Contents opens on the chapter you are reading (#331).
- A note in the Notes list could not be followed unless its paragraph was also marked (#331).
- The browser installer wrote to readers on 5.x firmware, which Cobalt cannot start on. It now refuses them before writing anything (#333).
Store
- Twelve apps that use the shared reader get the Contents and Notes fixes: Library, Gutenbird, Fanshelf, Grimoire, Needles, Preprints, Zotero, Daily Brief, Hacker News, RSS, Miniflux and Readeck (#331).
- Hacker News 1.0.17 marks job postings as Job instead of "1 point" and "0 comments" (#333).
Docs
- Every README and site screenshot retaken on the current runtime, with real content instead of placeholders (#330). README app links now lead to each app's own folder (#332).
Not yet tested on a reader
- Sound over Bluetooth headphones, and the installer's app list, Remove and Beta choice in a real browser.
Full changes: https://github.com/BandarLabs/Cobalt/compare/beta-v0.3.32...beta-v0.3.33
- beta-v0.3.32Cobalt 0.3.32 betapre-release2026-11-01 · 2026-11-01 15:06 UTC
查看更新说明
Colour on the Clara Colour and Libra Colour, quieter type with room to read it, and a Books that opens on the book you're reading.
Before you update
- Every Store app is rebuilt for protocol 17 and needs Cobalt 0.3.32. Update Cobalt first, then the apps.
Added
- Colour on Kaleido readers. Each app can name one of nine accents: the top bar takes its tint, and the primary button, selections, switches, ticks and progress take its strong shade. Text stays ink. Greyscale readers draw exactly what they drew before (#322).
- Colour where it means something: a red battery at 20% and below, green while charging, amber banners for attention, green for success, brown board squares, and refused fields tinted red (#322).
- Pictures in colour on a colour reader, in the book view, Frame, Fieldbook, Flashcards and Gutenbird.
kobo frame pushkeeps a photograph's colour for a colour reader (#322). - Books opens on the book you're reading, with its cover, page and Continue reading. The library below is shown as covers read from each book: Library, Recent, and Kobo reader for Store books and PDFs (#324).
- Books lists the books that Cobalt apps download, such as Gutenbird's, by their own titles (#324).
Changed
- Screens at protocol 17 use quieter type. Headings are 4.6 and 3.8 mm instead of 5.4 and 4.2, instructions are 2.7 mm instead of 2.4, and there's 3 mm under the top bar. When a screen would lose a line to the extra room, it gives the room back (#327).
- Commands to type on a computer are set in a fixed-pitch face on a grey panel and break only at spaces (#327).
- A sideloaded book shows the title Kobo's own library has for it, not its file name (#324).
kobo setupinstalls on readers the runtime already runs on: models with no profile, profiles awaiting review and unmeasured firmware. It says what is untested before it installs. Firmware 5.x is still refused (#319).
Fixed
- A Sync window stops when Cobalt hands back to the reader, and carries on in the next session. It used to run for up to five minutes while the stock reader started (#325).
- A page where a chapter opens no longer ends about six lines early. Frankenstein goes from 242 to 233 pages at the default size (#324).
- Books shows the size of a book over 4 MB instead of calling it damaged (#324).
- Pressing a coloured control no longer leaves a grey rectangle in the bar (#322).
Store
- All 46 apps rebuilt for protocol 17. Every one needs Cobalt 0.3.32 (#324, #327).
- Hacker News and Feeds are orange, Preprints and Stacks red, Birds green and Syncthing blue on a colour reader (#322).
- Fieldbook's species page has the name as its heading and one Back. Flashcards' first-use screen fits sideways at the largest text size (#327), and its licence notice names every library it is built with (#328).
Simulator
- On a colour profile, captures are in colour. The panel view runs the frame through a model of the colour filter, with the saturation an estimate until it's measured (#322).
Not yet tested on a reader
- Colour on a Clara Colour or Libra Colour, reading covers on a Clara BW, Sync stopping at hand-back, and the new type sizes have only run in the simulator so far.
Full changes: https://github.com/BandarLabs/Cobalt/compare/beta-v0.3.31...beta-v0.3.32
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Cobalt adds apps to Kobo e-readers. It includes a launcher, an app store, a Rust SDK, a runtime that runs each app in its own restricted process, and a simulator for building apps without a device.
Install Cobalt once over USB. After that, apps install, update and uninstall over Wi-Fi, and your Kobo's own reader stays as it was.
[!IMPORTANT] Tested on the Kobo Clara BW (N365 and the 2025 P365), Clara Colour, Clara HD, Elipsa 2E, Libra 2, Libra Colour and Libra H2O, at the firmware listed in the device support matrix. Other Kobos can run it too: Cobalt lists what has not been tested and asks once before it starts. Kobo firmware 5.x is not supported. Cobalt is not affiliated with Rakuten Kobo.
Install
The easiest way is the browser installer, in Chrome, Edge or Opera. Plug in your Kobo and follow the steps.
Or, on macOS or Linux:
curl -fsSL https://bandarlabs.github.io/Cobalt/install.sh | sh
Then restart the reader, wait a minute, and open Cobalt from the Kobo menu. If you already use NickelMenu, Cobalt is added to it and your other entries are kept.
The script also turns on the reader's SSH server, with a key only this
computer holds as the way in, and saves the reader when it comes back on
Wi-Fi. Apps that take files or accounts from your computer, such as Frame,
Music Stand and Vault, then work with commands like
kobo frame push ~/Pictures/family and nothing else to set up. If you used
the browser installer, run the script above once with the reader plugged in
when an app first needs your computer; it keeps everything already on the
reader. kobo setup --no-ssh leaves SSH off.
Everything the script downloads is checked against the signed release
manifest. To verify install.sh itself first, follow the
signed-bootstrap procedure.
docs/INSTALL.md covers updates, recovery, uninstalling and
building from source.
Updates
- Cobalt updates from Settings on the reader. Settings also switches between the Stable and Beta channels, keeping your apps and data.
- Apps update from Store.
- The
kobocommand on your computer updates withkobo update, orkobo update --channel beta. This never changes the reader.
Apps
Install and remove apps from Store on the reader, or from an app's page on the website: open Install links in Store to link a phone or computer, then use Install on any app page. The Launcher, Store, Settings and Terminal come with Cobalt and cannot be removed.
Screenshots are from a Kobo Clara BW or its simulator.
Want an app that is not here? Add it to the app request thread.
Features
- Signed app installs, updates and removal over Wi-Fi.
- App pages on the website that install to a linked Kobo by QR code or pairing code.
- Every app runs in its own unprivileged process, and must declare the services it uses, such as network, storage, audio or the front light.
- Cobalt updates are separate from app updates.
- A declarative e-ink interface toolkit, with full and partial refreshes planned for each supported screen.
- A browser simulator for building and testing apps without a device.
- Static ARMv7 binaries, with nothing to install on the reader beyond Cobalt.
- Interrupted installs and updates leave the working version in place.
- Folder sync with your computer through Syncthing.
How it compares
NickelMenu adds actions to the Kobo menu. KOReader and Plato are reading apps. Cobalt is a platform for building and installing many kinds of apps. It handles the screen, touch input, e-ink refreshes, app lifecycle, device access, isolation and signed installs, so app authors do not have to. The FAQ has more.
Build an app
git clone https://github.com/BandarLabs/Cobalt && cd Cobalt
cargo install --path crates/kobo-cli
kobo new my-app
cd my-app
kobo dev
kobo dev runs the app in the Clara BW simulator in your browser. Set
KOBO_SIM_PROFILE=libra-2-388 or KOBO_SIM_PROFILE=elipsa-2e-389 to try the
larger screens.
| Area | What the SDK provides |
|---|---|
| App model | Plain Rust programs with declarative screens, named actions, lifecycle callbacks and Back navigation |
| E-ink UI | Measured text, rows, tiles, pictures, dialogs, keyboards, terminal views, pagination and refresh planning |
| Network and credentials | HTTPS requests, ranged downloads, size limits, and named secrets that the app never sees |
| State and background work | Per-app storage, cancellable tasks, background and foreground events, and scheduled wake |
| Device and media | Battery, cover sensor, front light, Wi-Fi, Bluetooth and audio, each behind a declared capability |
| Tooling | Scaffolding, simulators, layout checks, failure scenarios, packaging and device deployment |
Apps ask the runtime for services instead of opening devices themselves. A request can be refused because it was not declared, the battery is too low or the device does not support it, and the app receives the refusal as a value it can handle.
Start with the SDK reference.
The full guide is SDK.md, and
docs/companion-cli.md covers the kobo command.
Contributing
Contributions are welcome: apps, fixes, documentation and device testing. See
CONTRIBUTING.md. Pull requests go to the beta branch.
To add an app:
- Add it as a workspace package under
apps/<app-id>/, with its entry inapps/catalog.json. - Add unit tests and layout checks for each supported screen.
- Run it in the simulators, then on a supported Kobo, and attach a photo, GIF or video to the pull request.
- Include a screenshot for the app's README and website page.
Once merged, the app is signed and published to the Beta catalog. It reaches Stable when that commit is promoted. See docs/CONTRIBUTING_APPS.md and docs/RELEASE-TRAIN.md.
Own a Kobo that is not tested yet? You can help without writing code. Open or join a device thread with your model, firmware and whether you can run attended tests. See device testing.
Repository layout
| Path | Purpose |
|---|---|
apps/ | Store apps and the app registry |
examples/ | Built-in apps and SDK examples |
crates/kobo-sdk | The application SDK |
crates/kobod | The runtime on the reader |
crates/kobo-ui | Layout and e-ink rendering |
crates/kobo-sim | The simulator |
crates/kobo-app-store | Signed package and catalog formats |
crates/kobo-cli | The kobo command: setup, build, simulation, packaging and release |
docs/ | Guides, indexed in docs/README.md |
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
See docs/DEVELOPING.md, docs/DEVICES.md and the roadmap.
Safety
Cobalt does not replace the Kobo's boot chain, and a restart always returns to the stock reader. Installing it adds files to the reader's user storage. It is provided without warranty. Report security issues as described in SECURITY.md.
License
GNU Affero General Public License v3.0. See LICENSE and THIRD-PARTY.md.
An application links kobo-sdk, which is AGPL-3.0-only with no linking
exception, so an application built with it is AGPL-3.0 as well. The SDK crates
are not published to crates.io: Store applications live in this repository and
are built from a checkout of it.
Bluetooth, Wi-Fi and Kobo are trademarks of their owners. See TRADEMARKS.md.