⚠️ Work in progress: Tanko is under active development and not yet stable. Features may change or break without notice.
Tanko is a headless manga and manhwa downloader and tracker with a web dashboard. It is based on the engine of HakuNeko, whose source connectors it reuses, kept up to date automatically. Tanko also ships its own native connectors for good sources HakuNeko lacks, and they win when both provide the same site. It works like a Sonarr for manga: follow series, detect new chapters, download them automatically, and get notified. Sources are managed for you: the list syncs automatically, unhealthy sources are filtered out, and downloads fail over to a working one, so your chapters stay up to date without you ever managing source outages.
![]() |
![]() |
![]() |
- Source catalog synced from HakuNeko and extended with our own connectors, with health checks
- Sonarr-like library: follow series, auto-download new chapters
- Persistent download queue with retries and rate limiting
- CBZ or image folder output, HakuNeko-compatible layout, fully compatible with readers such as Komga
- Dark web dashboard (English/French) with live updates
- Optional first-chapter thumbnails cached locally
- Cron scheduler with Discord/ntfy notifications
- Existing library import and source failover
Measured on the shipped Docker image:
- RAM: ~100 MB at idle, but the embedded headless Chromium (anti-bot fallback) adds ~800 MB as soon as a protected source is checked and stays resident. 1 GB works; 2 GB is comfortable.
- Disk: ~1.4 GB image + your library.
- Docker or Podman; or Node.js >= 22 to run outside a container (Chromium is optional there — only used if a system binary is present).
cp docker-compose.yml.example docker-compose.yml
docker compose up -d --buildThe dashboard is at http://localhost:8080. All data (SQLite database,
settings, downloaded library) lives in ./data, mounted as /data in the
container.
Podman works too: the image is OCI-compatible, podman build -t tanko . or
podman-compose up -d with the same compose file.
Building from GitHub without cloning:
docker build -t tanko:latest github.com/nils010485/tanko#latest # stable release
docker build -t tanko:nightly github.com/nils010485/tanko # latest mainChapter format, download parallelism (parallel sources × chapters per source), throttle and preferred languages are user settings: change them anytime in the dashboard's Settings tab, they are persisted in the database.
Environment variables, set in docker-compose.yml (deployment only):
| Variable | Default | Description |
|---|---|---|
PORT |
8080 |
HTTP port of the service |
CONNECTORS_AUTO_RESTART |
1 |
restart after a source sync to load new connectors; 0 disables |
IMPORT_PATH |
(empty) | container path of an existing library to import at startup |
IMPORT_AUTO_CONFIRM |
auto |
auto confirms reliable matches, all confirms everything, none requires manual validation |
IMPORT_AUTO_DOWNLOAD |
0 |
1 makes imported series auto-download future chapters |
Requires Node.js >= 22.
npm install
npm run build
DATA_DIR=./data node packages/server/dist/index.jsWith hot reload:
npm run devTests:
npm testA versioned pre-push hook runs lint + tests before every push. Activate
it once per clone:
git config core.hooksPath .githookspackages/
├── shared/ # shared DTO types (REST + WebSocket)
├── core/ # headless engine + connectors
│ └── vendor/ # HakuNeko connectors, synced automatically
├── server/ # Fastify + SQLite (node:sqlite), download queue, scheduler
└── dashboard/ # Vite + React + Tailwind, dark theme, EN/FR
- The legacy connectors come from the HakuNeko repository. Some sites have
changed or block scraping. The health check and the working-sources filter
help sort it out. Key sites can be added as native connectors in
packages/core/src/sources/native/. - Respect the source sites: throttling is enabled by default, avoid overly frequent checks.
MIT, see LICENSE. The HakuNeko connectors in
packages/core/vendor/ are public domain (Unlicense), see the upstream
repository for details.


