Runami is a lightweight, self-hosted anime streaming server written in Rust. It compiles into a single binary held together by duct tape (I'm not kidding) that serves your local video files with a modernish web interface — perfect for streaming to your browser, phone, tablet, or IPTV apps.
- Single Binary Deployment — HTML, CSS, and JS embedded via
rust-embed - Auto Cover Art — Fetches anime posters from AniList based on folder names
- IPTV/M3U Support — Stream your library in VLC, MPV, Infuse, or any IPTV app
- Format Support —
.mp4,.mkv,.webmfiles - Async & Fast — Built on
Tokio+Axum
- Double-tap to seek ±10s
- Hold to 2x speed
- Previous/Next episode buttons
- Resume playback (saves progress automatically)
- Search bar to filter anime
- Episode thumbnails (optional)
| Key | Action |
|---|---|
Space / K |
Play/Pause |
F |
Toggle Fullscreen |
← / J |
Rewind 10s |
→ / L |
Forward 10s |
↑ / ↓ |
Volume up/down |
M |
Mute/Unmute |
N |
Next episode |
P |
Previous episode |
Escape |
Close player |
0-9 |
Jump to 0%-90% |
Requirements: Rust toolchain
# Clone
git clone https://codeberg.org/Akin-Selcuk/runami.git
cd runami
# Build
cargo build --release
# Binary is at ./target/release/runami./runami /path/to/your/anime/library
# Custom port
./runami /path/to/your/anime/library --port 9090
# Allow any browser origin (less secure; default is restricted origins)
./runami /path/to/your/anime/library --cors-anyOutput:
🍿 RUNAMI - Local Anime Server
─────────────────────────────────────────
Web Player: http://192.168.1.50:8080
IPTV: http://192.168.1.50:8080/playlist.m3u
Notes:
- Default port is
8080. - CORS defaults to a safer restricted policy (localhost, 127.0.0.1, and detected LAN IP on your configured port).
- Use
--cors-anyonly if you explicitly need cross-origin browser access.
/your/library/
├── Attack_on_Titan/
│ ├── Episode_01.mkv
│ ├── Episode_02.mkv
│ └── ...
├── Demon_Slayer/
│ ├── S01E01.mp4
│ └── ...
├── Bleach/
│ ├── S1
│ ├── Episode-01.webm
│ └── ...
└── covers/ # Auto-generated
├── Attack_on_Titan.jpg
├── Demon_Slayer.jpg
└── Bleach.jpg
mpv "http://YOUR_IP:8080/playlist.m3u"
# Or single anime
mpv "http://YOUR_IP:8080/Anime_Name/playlist.m3u"- Media → Open Network Stream
- Enter:
http://YOUR_IP:8080/playlist.m3u
- Add Files → Network Share → Other
- Enter your server IP and browse
- Add Playlist → M3U URL
- Enter:
http://YOUR_IP:8080/playlist.m3u
Generate thumbnails with ffmpeg:
mkdir -p /path/to/library/thumbs/Anime_Name
for f in /path/to/library/Anime_Name/*.mkv; do
ffmpeg -ss 00:05:00 -i "$f" -vframes 1 -q:v 2 \
"/path/to/library/thumbs/Anime_Name/$(basename "$f").jpg"
done