A personal Japanese immersion tracker
Status: Beta.
Kechimochi is a personal activity tracker built for those who learn Japanese through immersion. It provides a simple way to log time spent with native content, whether you are reading manga, watching anime, playing video games, or listening to podcasts.
Designed with a local first philosophy, Kechimochi ensures that your data remains yours. It provides a focused interface to manage your media library, track your study habits, and keep ownership of your history without relying on external websites or cloud services.
A vibrant and colorful dashboard where you can see your historical activities and immersion time, including statistics of how many hours have been spent every day, week, year, and on what content. The dashboard also includes yearly heatmaps and per-media breakdowns so you can see where your study time is really going. You can log new activity directly from the New Activity button.
A fast and responsive library which tracks all the media you have added. You can browse the media you are currently watching, playing, or reading, track progress over time, manage cover images, and add milestones to record specific breakthroughs such as routes, chapters, endings, or in-game goals.
The metadata of each entry is provided by various websites which the user can add and download from automatically:
- Visual Novels: VNDB
- Anime and Movies: AniList and IMDb
- Manga and Books: Bookmeter, BookWalker, Cmoa, and Shonen Jump Plus
- Video Games: Backloggd and DMM Games
- Dictionary Integration: Jiten.moe metadata support
Are we missing some sites? Let us know by opening an issue on our issue tracker.
Customizable themes and a profile picture let you personalize the app while keeping the local-first workflow simple.
Desktop and Android builds support optional Google Drive cloud sync, allowing you to keep your media library, activity logs, milestones, settings, and profile picture in sync across multiple devices or installations.
- Sign in with Google: Authenticate with a Google account directly from the profile tab.
- Conflict Resolution: Per-field conflict review when changes from different devices cannot be merged automatically.
- Recovery Actions: Force-publish local state or restore from the remote snapshot when needed.
- Safety Backups: Kechimochi creates a local emergency backup ZIP before any sync operation that overwrites local data.
The application includes dedicated reading reports to help you understand your pace across different media. It estimates your reading speed from completed content and provides progress projections to calculate when you might finish your current book, manga, or visual novel based on your past activity.
Your logs are stored in local SQLite databases, giving you full control over your information.
- CSV Import: Migrate your existing logs from other spreadsheets or tools (see CSV Formats).
- CSV Export: Export your activity history, milestones, or library when you need a plain-text dataset.
- Full Backup / Restore: Save and restore the entire application state, including databases, settings, and covers.
- Local First Storage: Keep your data on your machine or your own server.
We take data preservation seriously. Kechimochi is designed to keep your data local, ships with explicit backup and restore support, and uses cautious database versioning and migration rules to reduce the risk of accidental data loss during updates. Even so, you should still keep regular backups of anything you care about.
Desktop builds can optionally expose a local HTTP API for automation and scripting. The API is disabled by default and can be enabled from the profile tab.
- Two scopes:
automation(read/write media, logs, milestones, and settings) andfull(everything inautomation, plus import, export, backup, covers, and network proxy endpoints). - Local or LAN mode: Bind to
127.0.0.1for local-only access or0.0.0.0to allow other devices on the same private network. - CORS support: Configure allowed browser origins for use with browser-based scripts or dashboards.
- Sync-aware: Mutating endpoints automatically mark the sync profile dirty so cloud sync picks up changes.
See HTTP API documentation for the full endpoint reference.
Kechimochi supports desktop and Android apps plus a self-hosted web mode powered by the same Rust backend. If you want a local native app, use the desktop or Android build. If you want to host it for yourself, you can run the bundled web server or the published Docker image.
The desktop app is the primary and most thoroughly tested way to use Kechimochi. The web mode is available as a best-effort option for self-hosting, but it has not been exercised as extensively as the desktop app.
Kechimochi is built with Tauri for the app experience (desktop and Android) and also supports a self-hosted web deployment.
For details on how to run the software on developer builds (and contribute!) see the Development.md document.
Kechimochi is currently in beta. Core tracking, media management, analytics, import/export, and backup flows are implemented and working, but you should still expect active iteration and occasional rough edges as the app continues to evolve.
If you want a beta release build, download it from the GitHub Releases page.
If you want to test the latest in-progress development build without building it yourself, grab one of the workflow artifacts from Publish Dev Artifacts. Those builds are for testers and contributors, and they display a DEV BUILD x.y.z-dev.<git-hash> label in the UI.
Kechimochi web mode is available as a container image on GitHub Container Registry:
ghcr.io/morgawr/kechimochi:latest
Run with Docker:
docker run -d \
--name kechimochi \
-p 3000:3000 \
-v /path/to/kechimochi-data:/data \
-e TZ=UTC \
ghcr.io/morgawr/kechimochi:latestThen open http://<your-server-ip>:3000.
The /data volume contains your SQLite databases and covers, so keep it on persistent storage.
The web deployment is still a best-effort option. If you want the most tested and supported experience today, prefer the desktop app.
services:
kechimochi:
image: ghcr.io/morgawr/kechimochi:latest
container_name: kechimochi
restart: unless-stopped
ports:
- "3000:3000"
environment:
TZ: UTC
KECHIMOCHI_DATA_DIR: /data
PORT: 3000
HOST: 0.0.0.0
volumes:
- /path/to/kechimochi-data:/dataVolume permissions: The container runs as uid/gid
10001by default. If your host path is owned by a different user (e.g. TrueNAS/Unraid systems where theappsuser is uid568), add auser:override so the container can write to the volume:user: "568:568"Replace
568:568with the uid:gid that owns your host data directory.
Start it with:
docker compose up -dUpdate to the newest image:
docker compose pull
docker compose up -dThis application has been developed with assistance from Large Language Model, use at your own risk.
A lot of the code has not been manually verified by humans, however we do strive for a high level of quality by employing strict tests, development guard rails, and automated checks before merging the code.
Kechimochi is built on a foundation of test suites and automated checks. We maintain unit tests for frontend and backend logic, along with an end to end (e2e) testing infrastructure. These automated systems run on every change to help prevent regressions and ensure that features remain stable as the project evolves.
This project is licensed under the MIT License. See the LICENSE file for details.



