Kobo Articles Proxy
This project allows you to connect your Kobo's article feature to use another backend, either another hosted service or one you self-host.
Note
As of August 2025, Kobo switched their article integration from Pocket to Instapaper. This project has been updated to work with either, so if you've updated your Kobo don't worry!
This project has two main components:
1 - Kobo Mod
This is a modification to be installed on your physical Kobo eReader. It replaces all HTTP API calls to either getpocket.com or www.instapaper.com to instead point to the URL of your choice, as specified by the config file, located at /.adds/pocket_proxy/pocket_proxy.conf on your device.
Installation & Uninstallation
Warning
This risks bricking your Kobo. I have only tested this on my Kobo Libra 2 - you've been warned. If you do brick your device, Kobo has some instructions on how to do a hard reset, which might rescue it (at the cost of wiping all data).
To install, copy the KoboRoot.tgz file to the /.kobo/ directory on your Kobo ereader, and unplug your device. It will install the modification and reboot. Note that you might have to enable hidden folders to see this directory.
To remove the mod, simply delete all files in the /.adds/pocket_proxy/ directory on your device, and reboot the device.
Configuration
To set the URL endpoint that your Kobo will make Pocket requests to, edit /.adds/pocket_proxy/pocket_proxy.conf with the following:
If your Kobo uses Instapaper:
[PocketProxy] GetSendApiHostPort=http://your-hosted-proxy.com/ TextApiHostPort=http://your-hosted-proxy.com/ GetSendProxiedHost=www.instapaper.com
If your Kobo still uses Pocket:
[PocketProxy] GetSendApiHostPort=http://your-hosted-proxy.com/ TextApiHostPort=http://your-hosted-proxy.com/ GetSendProxiedHost=getpocket.com TextProxiedHost=text.getpocket.com
After changing the config file, you might need to reboot your Kobo again.
How It Works
At startup, Kobo devices dynamically load all libraries in an /imageformats directory on the device. This mod is placed there, and when loaded uses NickelHook to replace a function called WebRequester::makeRequest() with a custom version. The custom function simply replaces outgoing Pocket HTTP calls with the URL set in the config file.
2 - Proxy Server
If your chosen article service replacement already has a Pocket-compatible API, then simply edit the mod config file to point to the replacement's API.
If not, then the included proxy server is designed to translate Pocket/Instapaper API calls to the API of one of the supported services, so the Kobo can talk to the new backend.
Note
The Kobo-Instapaper integration also uses a Pocket-compatible API.
Currently, only Readeck is supported, but please feel free to contribute code for other backends.
Installation & Configuration
Once you have your Readeck instance running, follow these steps to generate your bearer token:
- Log into your Readeck instance.
- Go to Settings > API Tokens
- (This should be located at
http://my-readeck-instance.com/profile/tokens)
- (This should be located at
- Click "Create a new API token" to create one.
- Make sure you grant this token Bookmark read & write permissions
- Copy the token in the "Your API token" field.
Now, you can start the proxy container, configured to use Readeck as the backend:
$ podman run docker.io/marklar423/kobo-pocket-proxy \ --backend_endpoint=http://my-readeck-instance.com \ --backend_bearer_token=123
Or if running the binary directly:
$ pocket-proxy-server --backend_endpoint=http://my-readeck-instance.com --backend_bearer_token=123
Building
There is a Makefile in the project root, all you have to do is run make all which will build the mod and proxy server. Note that the device mod relies on Podman to build inside of a container environment (for convenience), but this can be changed to Docker if you prefer.
To build the container version of the proxy:
cd proxy-server podman build .
Acknowledgements
This project would not have been possible without all the hard work done by the pgaskin in creating NickelHook, which is a wonderful framework for creating Kobo mods, and includes handy features like logging and failsafes.
Contributing
See CONTRIBUTING.md for details.
License
Apache 2.0; see LICENSE for details.
Disclaimer
I work for Google, but this project is not an official Google project. It is not supported by Google and Google specifically disclaims all warranties as to its quality, merchantability, or fitness for a particular purpose.