Koware is a standalone link/stream aggregator for Windows, macOS, and Linux that helps you search for anime/manga and open streams in a player from your terminal.
It has a text-based user interface but behaves like a regular CLI. You run a command, Koware queries your configured sources, and opens the selected stream in a video player or manga in a reader.
Koware requires no external dependencies or additional software. Everything—including the TUI components, fuzzy search, and terminal rendering—is built from scratch in pure C#.
⚠️ Important: Koware ships with no pre-configured sources. You must configure your own sources before using it. See Source Configuration below.
Left: Koware Player | Right: Koware Reader
- Search for anime/manga by title
- Browse episodes/chapters for a selected show
- Open streams in IINA, mpv, VLC, or the bundled Koware player (Windows)
- Read manga in the bundled reader (Windows and macOS)
- Keep watch history locally in a small SQLite database
Koware does NOT host any media. It does NOT include any source URLs. It only provides a framework for accessing user-configured sources.
- Install (Windows):
.\install-koware.ps1 -Publish - Install (macOS):
./Scripts/publish-macos.shthen run the app frompublish/ - Install (Linux):
curl -fsSL https://raw.githubusercontent.com/S1mplector/Koware/main/Scripts/install-koware-linux.sh | bash - Auto-configure providers:
koware provider autoconfig - Test connectivity:
koware provider test - Search and play:
koware stream "haikyuu" --episode 1 --quality 720p
After that, fine-tune appsettings.user.json if you need custom hosts.
- Windows: Windows 10 x64 or later, PowerShell.
- macOS: macOS 11+ (Intel or Apple Silicon).
- Linux: Most distributions with glibc 2.17+.
- To run from source: .NET 9 SDK.
| Dependency | Required | Purpose |
|---|---|---|
| .NET 9 Runtime | Yes (for source builds) | Runtime for Koware CLI |
| Git | Optional | Required for koware sync to sync data across devices |
GitHub CLI (gh) |
Optional | Enables automatic private repo creation with koware sync init |
Installing optional dependencies:
# Arch/Manjaro
sudo pacman -S git github-cli
# Ubuntu/Debian
sudo apt install git gh
# macOS
brew install git gh
# After installing gh, authenticate:
gh auth loginWith gh installed and authenticated, koware sync init will automatically create a private koware-sync repository on your GitHub account.
- Clone this repository.
- From the repo root, run:
.# From repo root
.\install-koware.ps1 -Publish # builds, publishes, and adds Koware to your PATHThis installs Koware under %LOCALAPPDATA%\koware and adds a global koware command.
After installation, open a new PowerShell window and run, for example:
koware search "bleach"
koware watch "haikyuu" --episode 1The installer package bundles everything needed to run Koware without needing to build from source. You can download the latest installer from the releases page. Koware will be added to your CMD and powershell configuration by default.
If typing koware and other koware commands don't work in a powershell prompt, in an administrator powershell prompt, run:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSignedIf you prefer not to, koware will work perfectly fine in any command prompt shell.
curl -fsSL https://raw.githubusercontent.com/S1mplector/Koware/main/Scripts/install-koware-linux.sh | bashOr with wget:
wget -qO- https://raw.githubusercontent.com/S1mplector/Koware/main/Scripts/install-koware-linux.sh | bashThis will:
- Download the latest release for your architecture (x64/arm64)
- Install to
~/.local/share/koware - Create a symlink in
~/.local/bin - Set up your PATH if needed
Download the latest .tar.gz from the releases page:
# Download and extract (replace VERSION and ARCH as needed)
wget https://github.com/S1mplector/Koware/releases/download/vX.X.X/koware-X.X.X-linux-x64.tar.gz
tar -xzf koware-*.tar.gz
cd koware
# Run the installer
./install.sh
# Or install system-wide
sudo ./install.sh --system# Clone the repo
git clone https://github.com/S1mplector/Koware.git
cd Koware
# Build and package
chmod +x Scripts/publish-linux.sh
./Scripts/publish-linux.sh
# For ARM64
./Scripts/publish-linux.sh --runtime linux-arm64
# Also create .deb package (Debian/Ubuntu)
./Scripts/publish-linux.sh --debThe build output will be in publish/. Run the included install.sh to complete installation.
| Item | Path |
|---|---|
| Executable | ~/.local/share/koware/koware |
| Symlink | ~/.local/bin/koware |
| Config | ~/.config/koware/appsettings.user.json |
| History DB | ~/.config/koware/history.db |
koware updateOr re-run the one-line installer to get the latest version.
Download the DMG from the releases page, open it, and it will run you through the install process.
# Clone and navigate to repo
cd Koware
# Make the script executable and run it
chmod +x Scripts/publish-macos.sh
./Scripts/publish-macos.sh
# For Apple Silicon (default)
./Scripts/publish-macos.sh --runtime osx-arm64
# For Intel Macs
./Scripts/publish-macos.sh --runtime osx-x64
# Universal (Intel + Apple Silicon)
./Scripts/publish-macos.sh --runtime universalThe script creates a DMG in publish/ that you can distribute or install from.
From the repo root you can also run Koware directly via dotnet:
dotnet run --project .\Koware.Cli -- search "<query>"Or use the helper script:
cd .\Koware
.\koware.ps1 -Command search -Query "fullmetal alchemist"
.\koware.ps1 -Command stream -Query "haikyuu" -Episode 1 -Quality 720p
.\koware.ps1 -Command play -Query "demon slayer" -Episode 1 -Quality 1080pAll examples assume you have the global koware command installed. If not, replace koware with dotnet run --project .\Koware.Cli --.
-
search– find anime by title and select an entry.-
Example:
koware search "one piece"
-
-
stream– choose a show, episode, and quality, and open the stream in your configured player.-
Example:
koware stream "haikyuu" --episode 1 --quality 720p
-
-
play– convenience command that searches and immediately opens a specific episode at a given quality.-
Example:
koware play "demon slayer" --episode 1 --quality 1080p
-
-
history– inspect and manage your local watch history.-
Run:
koware help history
-
When multiple search results are found, Koware will prompt you to choose one. You can also pass --index <n> or --non-interactive to skip prompts (useful for scripting).
Stream selection prefers HLS/DASH and HTTPS hosts; noisy HTTP logging is filtered by default so you can focus on the important bits.
For more information about available commands and options, run:
koware helpKoware reads its configuration from Koware.Cli/appsettings.json. This file is copied to the output directory at build time and read at runtime.
Key settings:
-
Player
-
By default, Koware uses the bundled Koware player for best compatibility. The player is included in the installer package. It's a lightweight, cross-platform media player built for Koware, and it's designed to work seamlessly with Koware's streaming workflow.
-
You can switch to VLC or mpv (or any other player) by changing:
Player:Command– the path or command name for your player.Player:Args– arguments that Koware should pass to the player.
Or, alternatively by using the config command. For more info, do:
koware help config
-
-
Reader
- Koware is installed bundled with the Koware reader. It is recommended to use the bundled reader, as other manga readers haven't been tested yet and compatibility is not guaranteed.
Koware ships with no pre-configured sources. You must configure sources yourself before using the app.
Create or edit the configuration file at:
- Windows:
%APPDATA%\koware\appsettings.user.json - macOS/Linux:
~/.config/koware/appsettings.user.json
Start from the sample in the repo:
cp Koware.Cli/appsettings.json ~/.config/koware/appsettings.user.jsonThen edit the copy with your own host/API URLs.
Koware can pull working provider configs from the public koware-providers repo and merge them into your appsettings.user.json. This is the recommended way to configure providers. This repository is public, anyone can contribute to it, but it is not guaranteed to be up-to-date or always perfectly working.
koware provider autoconfig # configure all available providers
koware provider autoconfig --list # see what’s available
koware provider autoconfig allanime # configure a single provider
koware provider test # verify connectivityThe command fetches providers.json plus the referenced config files, merges them into your config, and keeps any custom fields you already have. If the request fails, you can still edit manually as described below.
{
"AllAnime": {
"Enabled": true,
"BaseHost": "your-source-host.example",
"ApiBase": "https://api.your-source.example",
"Referer": "https://your-source.example",
"TranslationType": "sub"
},
"AllManga": {
"Enabled": true,
"BaseHost": "your-manga-host.example",
"ApiBase": "https://api.your-manga-source.example",
"Referer": "https://your-manga-source.example",
"TranslationType": "sub"
},
"GogoAnime": {
"Enabled": false,
"ApiBase": "https://api.your-alt-source.example",
"SiteBase": "https://your-alt-source.example"
}
}| Field | Purpose | Notes |
|---|---|---|
Enabled |
Turns the source on/off | Set true only for sources you control/trust |
BaseHost |
Host name used to build detail/cover image links | Example: allanime.to |
ApiBase |
Base URL for GraphQL/REST calls | Example: https://api.allanime.to |
Referer |
Referer/Origin headers | Should match the site you’re calling |
TranslationType |
sub/dub/etc. when the API supports it | sub is common |
SearchLimit (if present) |
Max results per query | Lower it if your source rate-limits |
Per source
AllAnime/AllManga: RequireBaseHost,ApiBase,Referer, andTranslationType.GogoAnime: UsesSiteBasefor page URLs andApiBasefor API calls.
Koware does not provide or recommend specific sources. You must:
- Find compatible API endpoints yourself
- Ensure you have the legal right to access them
- Configure them in your
appsettings.user.json
Note: Without configured sources, Koware will display a warning and return no results.
- Run
koware search "<title>"to confirm you get results; an empty list usually meansApiBase/Referer/BaseHostis incorrect. - Logs will warn if a source is disabled or missing required fields.
- If you rotate hosts often, keep multiple sources in the file and flip
Enabledas needed.
| Command | What it does |
|---|---|
koware provider list |
Show providers and enabled/disabled state |
koware provider autoconfig [name] |
Pull remote config for all or a specific provider |
koware provider autoconfig --list |
Show which remote providers are available |
koware provider test [name] |
Quick connectivity check |
koware provider --enable <name> / --disable <name> |
Toggle a provider |
koware provider add <name> |
Interactive manual setup |
koware provider edit |
Open your config in the default editor |
- No results / empty search: Run
koware provider test, confirmApiBaseandRefererare valid, and re-runkoware provider autoconfig. - HTTP 403/401: The source likely requires a specific
Referer/Origin—ensure they match the site host. - Bad host errors:
BaseHostmust be a hostname only (no protocol).ApiBasemust be a full URL. - Resetting: Move/delete
appsettings.user.json, copyKoware.Cli/appsettings.json, then runkoware provider autoconfig.
Koware includes a custom-built interactive selector inspired by fzf, implemented entirely from scratch in C# with no external TUI libraries.
Architecture (Single Responsibility Principle):
| Component | File | Responsibility |
|---|---|---|
InteractiveSelector<T> |
InteractiveSelector.cs |
Orchestrates selection flow, manages state |
TerminalBuffer |
TerminalBuffer.cs |
Low-level terminal I/O, ANSI escape codes, double-buffering |
SelectorRenderer |
SelectorRenderer.cs |
UI rendering logic |
InputHandler |
InputHandler.cs |
Keyboard input processing |
FuzzyMatcher |
FuzzyMatcher.cs |
Fuzzy string matching algorithm |
Features:
- Double-buffered rendering – Builds output in a buffer before flushing to prevent flicker
- Alternate screen buffer – Uses ANSI
\x1b[?1049hfor a clean, full-screen TUI experience - Terminal resize handling – Detects terminal size changes and re-renders automatically
- Fuzzy search – Type to filter items with intelligent scoring (exact matches, word boundaries, consecutive characters)
- Quick jump – Press 1-9 to instantly select visible items
- Vim-style navigation – Arrow keys, Page Up/Down, Home/End support
Why build from scratch?
- Zero external dependencies keeps Koware lightweight and portable
- Full control over rendering behavior and ANSI escape sequences
- Optimized for the specific use case of selecting anime/manga entries
- Cross-platform compatibility (Windows, macOS) without platform-specific TUI libraries
Koware keeps a local watch history in a small SQLite database:
- Windows:
%APPDATA%\koware\history.db - macOS:
~/.config/koware/history.db
To learn more and see available history options, run:
koware help historyKoware ships with zero pre-configured sources. The software is a framework that requires users to configure their own sources. This is similar to how a web browser does not include bookmarks—users add their own.
- ❌ Does NOT host, store, or distribute any media content
- ❌ Does NOT include any pre-configured source URLs or streaming links
- ❌ Does NOT include or support bypassing paywalls or DRM
- ❌ Does NOT circumvent technical protection measures
You are solely responsible for:
- The sources you configure
- The content you access
- Ensuring compliance with your local laws
- Respecting the terms of service of any services you access
Koware does not turn unauthorized or infringing content into authorized content.
- See
Usage-Notice.mdfor the full usage notice - See
DMCA.mdfor our DMCA policy and takedown process
Nothing in this project, its documentation, or its source code constitutes legal advice.



