Installation
Fishnet is distributed as a single Rust binary with no external dependencies. Choose the installation method that works best for your environment.
Prerequisites
# No dependencies required for pre-built binaries
# For building from source:
# - Rust 1.85+
# - Node.js 22+ (for dashboard)
Install script (recommended)
The fastest way to install Fishnet on Linux or macOS:
curl -fsSL https://github.com/iamyxsh/fishnet/releases/latest/download/install.sh | sh
Custom install directory
By default, the binary installs to ~/.local/bin. Override with INSTALL_DIR:
INSTALL_DIR = /usr/local/bin curl -fsSL https://github.com/iamyxsh/fishnet/releases/latest/download/install.sh | sh
Custom data directory
Runtime data defaults to:
Linux : /var/lib/fishnet
macOS : /Library/Application Support/Fishnet
For local dev/CI, override with FISHNET_DATA_DIR:
export FISHNET_DATA_DIR =~ /. fishnet
fishnet start
The install script downloads the latest release from GitHub. It automatically detects your platform (Linux/macOS) and architecture (x86_64/arm64).
Download binary manually
Download the latest release for your platform:
Linux x86_64
Linux arm64
macOS x86_64
macOS arm64 (Apple Silicon)
wget https://github.com/iamyxsh/fishnet/releases/latest/download/fishnet-linux-amd64
chmod +x fishnet-linux-amd64
sudo mv fishnet-linux-amd64 /usr/local/bin/fishnet
Verify the installation:
Docker
Pull the official multi-arch image:
docker pull d3vdhruv/fishnet:latest
Run with Docker Compose
Create a docker-compose.yml:
services :
fishnet :
image : d3vdhruv/fishnet:latest
ports :
- "8473:8473"
volumes :
- fishnet-data:/var/lib/fishnet
- ./fishnet.toml:/etc/fishnet/fishnet.toml:ro
environment :
- FISHNET_DATA_DIR=/var/lib/fishnet
restart : unless-stopped
volumes :
fishnet-data :
Start the container:
Run with docker run
docker run -d \
--name fishnet \
-p 8473:8473 \
-v fishnet-data:/var/lib/fishnet \
-v $( pwd ) /fishnet.toml:/etc/fishnet/fishnet.toml:ro \
d3vdhruv/fishnet:latest
The Docker image includes the embedded dashboard. Access it at http://localhost:8473.
Development with Docker
Use the Makefile for local dev:
Build and start
View logs
Stop
Clean up
make docker-up
# API + dashboard on http://localhost:8473
Homebrew
Homebrew support is coming soon. The formula will be published to a tap on release.
Once available, install with:
brew tap d3vdhruv/fishnet
brew install fishnet
Build from source
For the latest development version or custom builds:
Clone the repository
git clone https://github.com/iamyxsh/fishnet.git
cd fishnet
Install dependencies
Requires Rust 1.85+ and Node.js 22+ : # Check versions
rustc --version # Should be 1.85+
node --version # Should be 22+
# Install frontend dependencies
make install
Build production binary
This compiles the Rust backend and embeds the React dashboard: The binary will be at ./target/release/fishnet.
Install to PATH
sudo cp ./target/release/fishnet /usr/local/bin/fishnet
Development build
For local development with hot reload:
Full stack (API + frontend)
Backend only
Frontend only
Backend with auto-reload
make dev
# API → http://localhost:8473
# App → http://localhost:5173 (proxies /api → :8473)
Development builds include seed data (test credentials, test blockchain) via the dev-seed feature flag.
System service
Run Fishnet as a background service that starts on boot.
Linux (systemd)
Install the user service:
fishnet service install --apply
This creates ~/.config/systemd/user/fishnet.service:
[Unit]
Description =Fishnet local security proxy
After =network-online.target
[Service]
Type =simple
ExecStart =/usr/local/bin/fishnet start
Restart =on-failure
RestartSec =2
[Install]
WantedBy =default.target
Manage the service:
systemctl --user status fishnet # Check status
systemctl --user stop fishnet # Stop
systemctl --user restart fishnet # Restart
macOS (LaunchAgent)
Install the launch agent:
fishnet service install --apply
This creates ~/Library/LaunchAgents/dev.fishnet.local.plist:
<? xml version = "1.0" encoding = "UTF-8" ?>
<! DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd" >
< plist version = "1.0" >
< dict >
< key > Label </ key >
< string > dev.fishnet.local </ string >
< key > ProgramArguments </ key >
< array >
< string > /usr/local/bin/fishnet </ string >
< string > start </ string >
</ array >
< key > RunAtLoad </ key >
< true />
< key > KeepAlive </ key >
< true />
</ dict >
</ plist >
Manage the agent:
launchctl list | grep fishnet # Check status
launchctl stop dev.fishnet.local # Stop
launchctl start dev.fishnet.local # Start
Uninstall service
fishnet service uninstall --apply
Omit --apply to see what commands will run (dry-run mode).
Verify installation
Check that Fishnet is installed correctly:
You should see:
Run the init wizard:
Start the server:
Run diagnostics:
Next steps
Quickstart Initialize Fishnet and run your first protected request
Configuration Configure policies, spend caps, and service integrations
CLI reference Full list of available commands and options
Dashboard Access the web UI for real-time monitoring