Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/coah80/yoink/llms.txt

Use this file to discover all available pages before exploring further.

Getting Yoink up and running takes only a few minutes if you already have Go and the required media tools installed. The entire server is a single compiled binary that serves both the REST API and the pre-built Svelte frontend from a public/ directory sitting next to the executable — no separate Node.js process, no reverse proxy required for basic use.
1
Install system dependencies
2
Yoink relies on three external command-line tools at runtime. Install them using your system package manager before building.
3
macOS (Homebrew)
brew install go yt-dlp ffmpeg gallery-dl
Ubuntu / Debian
# Go 1.24+ — use the official installer or snap
sudo snap install go --classic

# yt-dlp (recommended: install via pip for latest version)
sudo apt install python3-pip ffmpeg
pip3 install -U yt-dlp

# gallery-dl (optional — required only for image gallery downloads)
pip3 install -U gallery-dl
Arch Linux
sudo pacman -S go yt-dlp ffmpeg gallery-dl
4
gallery-dl is optional. It is only needed if you plan to download image galleries. The rest of Yoink’s features work without it.
5
ToolMin versionRequiredGo1.24+Yesyt-dlplatestYesffmpeg6.0+Yesgallery-dllatestOptional
6
Clone the repository
7
git clone https://github.com/coah80/yoink.git
cd yoink
8
Configure environment variables
9
Copy the example environment file and edit it with your values.
10
cp .env.example .env
11
Open .env in your editor. The table below shows the most important variables to set before your first run. See the Configuration page for the full reference.
12
VariableDefaultNotesPORT3001Port the HTTP server listens onNODE_ENVdevelopmentSet to production for a live deploymentBOT_SECRET(none)Set this — protects bot endpoints from unauthorized accessCOBALT_APIShttps://co.eepy.todayComma-separated list of Cobalt API instances for the YouTube fast pathCOBALT_API_KEY(none)API key for authenticated Cobalt instancesOPENAI_API_KEY(none)Required only if you want AI transcription via Whisper
13
If BOT_SECRET is not set, Yoink will print a warning at startup and all bot API endpoints will be accessible without authentication. Always set this value before exposing Yoink to the internet.
14
You can supply multiple Cobalt instances as a comma-separated list in COBALT_APIS for redundancy:
COBALT_APIS=https://co.eepy.today,https://your-cobalt-instance.example.com
Yoink round-robins across them automatically.
15
Build the server binary
16
make build
17
This compiles the Go server and writes the output to ./yoink. The version string is embedded at compile time from the current git tag.
18
Linux (cross-compile)
make linux
# Output: ./yoink-linux  (linux/amd64)
Windows (cross-compile)
make windows
# Output: ./yoink.exe  (windows/amd64)
Development (no compile step)
make run
# Runs: go run ./cmd/yoink
19
Run the server
20
./yoink
21
The server starts on :3001 by default and prints a startup banner:
22
  ┌──────────────────────────────────┐
  │         yoink-go v1.x.x          │
  │    media download api server     │
  └──────────────────────────────────┘
23
Open http://localhost:3001 in your browser to see the Svelte frontend. The API is available at the same origin under /api/.
24
Yoink stores temporary files in /var/tmp/yoink. Make sure the process user has write access to that path. The directory structure is created automatically on first start.
25
(Optional) Build and run the Discord bot
26
If you want slash command support in Discord, build the companion bot binary separately.
27
make bot
28
This produces ./yoink-bot. Before running the bot, add the following variables to your .env file — the bot will exit immediately if any required value is missing.
29
VariableRequiredDefaultDescriptionDISCORD_TOKENYes(none)Discord bot token from the Discord Developer Portal.DISCORD_APP_IDYes(none)Application (client) ID of your Discord application.BOT_SECRETYes(none)Shared secret that must match BOT_SECRET on the Yoink server.YOINK_API_URLNohttp://localhost:3003Internal URL the bot uses to reach the Yoink API.YOINK_PUBLIC_URLNo(value of YOINK_API_URL)Public-facing URL embedded in bot response messages. Defaults to YOINK_API_URL if not set.
30
./yoink-bot
31
To cross-compile the bot for a Linux server in one step, use make linux-bot, which outputs ./yoink-bot-linux (linux/amd64).
32
Available bot slash commands once registered:
33
CommandDescription/yoinkDownload a video or audio file by URL/convertConvert an uploaded file to a different format/compressCompress a video to a target file size

Next Steps

Configuration

Review all environment variables, compiled-in limits, and allowed format options.

Self-Hosting Requirements

Set up a reverse proxy, systemd service, and production environment.

Build docs developers (and LLMs) love