The Linux download manager. Fast, segmented downloads with a clean GUI, browser integration, and deep desktop integration.
notify-sendOne-liner:
curl -fsSL https://raw.githubusercontent.com/fhsinchy/bolt/master/install.sh | sh
This downloads the latest release, installs the binary to ~/.local/bin, sets up a systemd user service, desktop entry, and icon. Bolt starts automatically on login.
To uninstall:
curl -fsSL https://raw.githubusercontent.com/fhsinchy/bolt/master/install.sh | sh -s -- --uninstall
Make sure ~/.local/bin is in your PATH.
Download the latest tarball from GitHub Releases:
tar xzf bolt-linux-amd64.tar.gz
cd bolt-linux-amd64
mkdir -p ~/.local/bin ~/.config/systemd/user ~/.local/share/applications ~/.local/share/icons/hicolor/256x256/apps
cp bolt ~/.local/bin/
cp bolt.service ~/.config/systemd/user/
sed "s|Exec=bolt|Exec=$HOME/.local/bin/bolt|" bolt.desktop > ~/.local/share/applications/bolt.desktop
cp appicon.png ~/.local/share/icons/hicolor/256x256/apps/bolt.png
gtk-update-icon-cache -f -t ~/.local/share/icons/hicolor 2>/dev/null || true
update-desktop-database ~/.local/share/applications 2>/dev/null || true
systemctl --user daemon-reload
systemctl --user enable --now bolt
Bolt ships browser extensions for Chrome and Firefox that intercept downloads and forward them to Bolt.
Submissions to the Chrome Web Store and Firefox Add-ons (AMO) are in progress. In the meantime, you can install the extensions manually.
Chrome:
bolt-capture-chrome.zip from the latest releasechrome://extensions and enable Developer modeFirefox:
Firefox requires add-ons to be signed by Mozilla. Until the AMO submission is approved, you can load it temporarily:
bolt-capture-firefox.zip from the latest release and unzip itabout:debugging#/runtime/this-firefoxNote: Temporary add-ons are removed when Firefox restarts. A signed version will be available on AMO soon.
The extension popup lets you configure the server URL and auth token. On first install, a welcome page walks you through setup.
System dependencies:
Fedora:
sudo dnf install golang gtk3-devel webkit2gtk4.1-devel gcc-c++
Ubuntu / Debian:
sudo apt install golang libgtk-3-dev libwebkit2gtk-4.1-dev build-essential
Arch:
sudo pacman -S go gtk3 webkit2gtk-4.1
Node.js (see nodejs.org/en/download):
curl -fsSL https://fnm.vercel.app/install | bash
fnm use --install-if-missing 20
pnpm (see pnpm.io/installation):
curl -fsSL https://get.pnpm.io/install.sh | sh -
Wails CLI:
go install github.com/wailsapp/wails/v2/cmd/wails@latest
Verify your environment with wails doctor.
git clone https://github.com/fhsinchy/bolt.git
cd bolt
make build
make dev # hot-reload development
make test # run all tests
make test-race # run tests with race detector
make build # production build
make install # build + install locally with systemd service
make uninstall # remove everything
Single GUI binary — Wails window + HTTP server + download engine.
cmd/bolt/ Entry point (GUI launch)
internal/
engine/ Download engine (segmented downloading, retry, resume)
queue/ Queue manager (concurrency control)
server/ HTTP server (REST API + WebSocket)
app/ Wails IPC bindings
db/ SQLite data access layer
config/ Configuration management
event/ Event bus (pub/sub)
tray/ System tray
notify/ Desktop notifications
model/ Shared types
frontend/ Svelte 5 + TypeScript + Tailwind CSS
extensions/ Chrome + Firefox browser extensions
| Component | Technology |
|---|---|
| Backend | Go 1.23+ |
| GUI | Wails v2 |
| Frontend | Svelte 5, TypeScript 5, Vite 6, Tailwind CSS 4 |
| Database | SQLite via modernc.org/sqlite (pure Go, no CGO) |
| WebSocket | nhooyr.io/websocket |
| System tray | energye/systray |