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.

~/minato
$ curl -O https://minato.run$ docker compose up -d
MITlicense
< 300ms*cold start
single containerdocker
02 / Why

The web is volatile.
Your torrent library shouldn't be.

∞ retention
01

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.

5+ sources
02

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.

Sonarr/Radarr ready
03

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.

03 / Engine

Performance
is a feature.

Ingestion pipeline

Scrapers

bun runtime

Hono API

http / websocket

BullMQ Workers

concurrent jobs

Postgres

persistent store

Meilisearch

search index

Zero-overhead runtime

< 300ms

Workers, the API layer, and even scrapers both run on Bun. Cold starts measured in milliseconds, not seconds.

Concurrent, non-blocking ingestion

parallel

BullMQ distributes parsing, metadata enrichment, and deduplication across isolated workers. One slow process never stalls the rest.

Blazingly-fast search

miliseconds

Meilisearch with custom ranking profiles tuned for release quality, seed health, and freshness. Results before your finger leaves the key.

04 / Build

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
// 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
  },
});
05 / Deploy

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

06 / Start

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