Your index,permanently.
Project Minato is a self-hosted vault platform for the torrent ecosystem. It captures infohashes, and metadata from trackers and keeps them locally, forever.
$ curl -O https://minato.run$ docker compose up -d
The web is volatile.
Your torrent library shouldn't be.
Permanent local storage
Not a proxy. Not a router. Every infohash Minato captures is stored in your own Postgres instance: indexed, deduped, available long after the original source disappears.
Aggregation without lock-in
Pull from EZTV, Knaben, and a growing list of built-in scraper, or write your own. Minato doesn't care where the data comes from, as long as it gets saved.
Native Torznab compatibility
Your existing stack works on day one. Minato serves a Torznab XML and RSS API so Sonarr and Radarr can query your local cache exactly like any remote indexer.
Performance
is a feature.
Scrapers
bun runtime
Hono API
http / websocket
BullMQ Workers
concurrent jobs
Postgres
persistent store
Meilisearch
search index
Scrapers
bun runtime
Hono API
http / websocket
BullMQ Workers
concurrent jobs
Postgres
persistent store
Meilisearch
search index
Zero-overhead runtime
< 300msWorkers, the API layer, and even scrapers both run on Bun. Cold starts measured in milliseconds, not seconds.
Concurrent, non-blocking ingestion
parallelBullMQ distributes parsing, metadata enrichment, and deduplication across isolated workers. One slow process never stalls the rest.
Blazingly-fast search
milisecondsMeilisearch with custom ranking profiles tuned for release quality, seed health, and freshness. Results before your finger leaves the key.
Write a scraper
in a few minutes.
Ship it to anyone.
Community scrapers are plain TypeScript modules built with @project-minato/skit. Scaffold one in seconds with the create-minato-scraper CLI, install from the registry, or paste a GitHub repo URL directly from the dashboard. Minato pulls and mounts it automatically.
For heavier workloads, sidecar scrapers can run isolated containers and connect over the network. Resource-intensive sources stay off the main stack entirely.
bunx create-minato-scraper@latest my-scraper// src/index.ts — generated by create-minato-scraper
import { defineScraper } from "@minato/skit";
export default defineScraper({
name: "my-scraper",
schedule: "every 6 hours",
async run({ ingest }) {
// fetch, parse, and lock down records
},
});One container.
One port. Done.
One entry point
API, dashboard, Scrapers, Torznab feeds, and background workers all run through inside a single container on one port: 7271.
Port 7271
Reverse proxy friendly
Designed to sit behind Traefik, Nginx, or Caddy. Just point it at your domain and go. Automatic HTTPS with zero config.
Multi-arch native builds
Pre-built for linux/amd64 and linux/arm64. Runs identically on your x86 tower or a Raspberry Pi 5.
amd64 · arm64
Own yourindex.
Public indexers disappear. Minato doesn't. Spin it up in under a minute and stop depending on infrastructure you don't control.
港 minato — built in the open, one harbor at a time