Skip to main content

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)
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:
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:
fishnet --version

Docker

Pull the official multi-arch image:
docker pull d3vdhruv/fishnet:latest

Run with Docker Compose

Create a docker-compose.yml:
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:
docker compose up -d

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:
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:
1

Clone the repository

git clone https://github.com/iamyxsh/fishnet.git
cd fishnet
2

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
3

Build production binary

This compiles the Rust backend and embeds the React dashboard:
make build-prod
The binary will be at ./target/release/fishnet.
4

Install to PATH

sudo cp ./target/release/fishnet /usr/local/bin/fishnet

Development build

For local development with hot 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:
fishnet --version
You should see:
fishnet 0.1.0
Run the init wizard:
fishnet init
Start the server:
fishnet start
Run diagnostics:
fishnet doctor

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

Build docs developers (and LLMs) love