Cobalt

BandarLabsAGPL-3.0活跃维护

用 Rust 写的 Kobo 墨水屏阅读器 SDK,能开发应用并搭建应用商店,还内置 RSS、OPDS 和 Lichess 等阅读扩展。

SDK for building apps & an app store for your Kobo eInk reader

beta-v0.3.36发布于 2026-11-08 14:03 UTC432star44fork同步于 2026-11-10 18:00 UTC

怎么上手

由 README 提炼,执行前请确认
curl -fsSL https://bandarlabs.github.io/Cobalt/install.sh | sh
硬件要求按 README 说明

运行于 Kobo 电子书阅读器,已在 Clara BW、Clara Colour、Clara HD、Elipsa 2E、Libra 2、Libra Colour、Libra H2O 上测试;不支持 Kobo 5.x 固件。README 未提及显存或 CPU 要求。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

给 Kobo 电子书阅读器加装应用商店和 Rust SDK,让墨水屏也能跑第三方应用

用 Rust 写的 Kobo 墨水屏阅读器 SDK,能开发应用并搭建应用商店,还内置 RSS、OPDS 和 Lichess 等阅读扩展。

核心能力

  • 内置启动器、应用商店和设置,应用可经 Wi-Fi 安装更新
  • 每个应用运行在独立受限进程中,按声明能力申请设备服务
  • Rust SDK 提供声明式屏幕、墨水屏排版与刷新规划
  • 自带浏览器模拟器,无需真机即可开发和调试应用
  • 安装脚本同时开启 SSH,支持从电脑推送文件给应用

容易踩的坑

安装后需重启阅读器并等待约一分钟,再从 Kobo 菜单打开 Cobalt;Kobo 5.x 固件不受支持,未测试机型启动前会提示确认;部分应用(如 Frame、Music Stand、Vault)需要先在电脑上运行安装脚本开启 SSH 才能传文件。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本beta-v0.3.36
  1. 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 init again on your computer so it pairs Books too, and keep kobo sidekick run going.

    Added

    • kobo clip turns 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 --later queues an article and kobo clip sync sends what is waiting. kobo clip install sets 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

  2. 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 push now 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

  3. 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::spoken in 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 tap refused a reader on firmware 4.46 (#337).
    • Unsupported readers (Elipsa, Sage and the i.MX50/6SL generation) are refused plainly by kobo setup and 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

  4. 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 Audiobooks folder, 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

  5. 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 push keeps 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 setup installs 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

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    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 kobo command on your computer updates with kobo update, or kobo 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.

    AreaWhat the SDK provides
    App modelPlain Rust programs with declarative screens, named actions, lifecycle callbacks and Back navigation
    E-ink UIMeasured text, rows, tiles, pictures, dialogs, keyboards, terminal views, pagination and refresh planning
    Network and credentialsHTTPS requests, ranged downloads, size limits, and named secrets that the app never sees
    State and background workPer-app storage, cancellable tasks, background and foreground events, and scheduled wake
    Device and mediaBattery, cover sensor, front light, Wi-Fi, Bluetooth and audio, each behind a declared capability
    ToolingScaffolding, 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:

    1. Add it as a workspace package under apps/<app-id>/, with its entry in apps/catalog.json.
    2. Add unit tests and layout checks for each supported screen.
    3. Run it in the simulators, then on a supported Kobo, and attach a photo, GIF or video to the pull request.
    4. 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

    PathPurpose
    apps/Store apps and the app registry
    examples/Built-in apps and SDK examples
    crates/kobo-sdkThe application SDK
    crates/kobodThe runtime on the reader
    crates/kobo-uiLayout and e-ink rendering
    crates/kobo-simThe simulator
    crates/kobo-app-storeSigned package and catalog formats
    crates/kobo-cliThe 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.