Skip to content

Latest commit

ย 

History

536 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Fish Logo

๐ŸŸ Fish

The Blazing Fast, Cache-First Build Orchestration System for Polyglot Monorepos

CI License: MIT Rust Edition Open in GitHub Codespaces

English | Franรงais | Deutsch | ๆ—ฅๆœฌ่ชž | ํ•œ๊ตญ์–ด | Tiแบฟng Viแป‡t | ็ฎ€ไฝ“ไธญๆ–‡ | ็น้ซ”ไธญๆ–‡


Fish is a high-performance build orchestration engine engineered in Rust 2024. It delivers the speed and simplicity of Turborepo with the polyglot power of Bazel โ€” without requiring complex configuration languages like Starlark or custom build DSLs.

Fish automatically discovers your toolchains, analyzes source trees to infer cross-language dependency edges, schedules tasks across a lock-free work-stealing pool, and caches every artifact using cryptographically secure BLAKE3 content-addressable storage (CAS) and Zstandard compression.

๐Ÿ’ก Notice: Fish coordinates existing compilers and package managers (Cargo, Go, npm/pnpm, Python, Clang, etc.). It does not replace them. Unrelated to fish-shell โ€” they share only a name.


โœจ Key Highlights

Feature Description
โšก Sub-Millisecond Scheduling Chase-Lev work-stealing queues and critical-path scheduling dispatch tasks in <100ยตs.
๐ŸŒ 11+ Language Ecosystems Native backends for Rust, Go, TypeScript/JS, Python, C/C++, Java, .NET, Swift, Dart, Zig, and Docker.
๐Ÿ”— Automatic Dependency Inference Contract-first cross-language linking: references (like include_str!, JSON imports) automatically wire DAG edges without manual depends_on.
๐Ÿ’พ High-Throughput CAS Cache Deduplicated BLAKE3 content-addressable storage with tiered L1/L2 caching and ZSTD compression.
๐Ÿ“ก Zero-Config P2P Cache Share build artifacts peer-to-peer over local Wi-Fi / LAN with teammates โ€” zero cloud server costs.
๐Ÿ›ก๏ธ Hermetic Isolation Multi-platform sandboxing: Linux namespaces & Landlock, macOS seatbelt, and Windows security tokens.
๐Ÿ“Š Real-Time Interactive UI Built-in web dashboard (fish ui) featuring an interactive SVG DAG visualizer and telemetry graphs.

๐Ÿš€ Quick Install

1-Line Installer

Linux & macOS

curl -fsSL https://raw.githubusercontent.com/requla11/fish/main/scripts/install.sh | sh

Windows (PowerShell)

irm https://raw.githubusercontent.com/requla11/fish/main/scripts/install.ps1 | iex

Package Managers

Platform Package Manager Command
Windows Scoop scoop install https://raw.githubusercontent.com/requla11/fish/main/packaging/fish.json
Windows Winget winget install requla11.fish
macOS Homebrew brew tap requla11/fish https://github.com/requla11/homebrew-fish && brew install fish
Cargo crates.io / Git cargo install --git https://github.com/requla11/fish.git fish-cli

๐Ÿ Quick Start

Navigate to any multi-language repository and run:

# Build the entire workspace in parallel with smart caching
fish build

# Run all test suites across every language
fish test

# Watch mode: re-compile and re-test on file changes
fish dev

# Clean build artifacts (or clean everything including local cache with --all)
fish clean --all

# Launch the interactive web dashboard & DAG visualizer
fish ui --open

Try the Polyglot Demo

We include a realistic contract-first monorepo combining Rust + Go + Python + TypeScript:

cd examples/polyglot-demo
fish build
fish graph --format tree

Output:

๐Ÿ”— Inferring cross-language dependencies:
   โ†ณ go-service โ†’ py-worker (Go project references `../py-worker/contracts/events.schema.json`)
   โ†ณ rust-service โ†’ py-worker (Rust project references `../../py-worker/contracts/events.schema.json`)
   โ†ณ web-frontend โ†’ py-worker (TypeScript project references `../../py-worker/contracts/topics.json`)
๐Ÿ”— Linked 6 cross-project task edge(s) from 3 inference(s)

Build completed successfully.
  Tasks:     7 total (7 cached, 100% cache hit)
  Duration:  0.01s

๐Ÿ› ๏ธ Supported Ecosystems

Fish natively detects and orchestrates projects across 11 major ecosystems:

Ecosystem Manifest Detected Default Tasks
Rust Cargo.toml cargo check, cargo build, cargo test
TypeScript / Node package.json, tsconfig.json typecheck, build, test
Go go.mod go vet, go build, go test
Python pyproject.toml, requirements.txt syntax compile, pytest, lint
C / C++ CMakeLists.txt, fish.cc.json CMake configure, build, ctest
Java pom.xml, build.gradle compile, test
.NET / C# *.csproj, *.sln dotnet build, dotnet test
Swift Package.swift swift build, swift test
Dart / Flutter pubspec.yaml dart analyze, dart test
Zig build.zig zig build, zig test
Docker / OCI Dockerfile, docker-compose.yml Multi-stage image build, OCI compilation

๐Ÿ“‹ Essential Commands

Fish keeps its CLI clean, intuitive, and developer-friendly:

Build & Test:
  fish build             Build all targets discovered from the project graph
  fish check             Type-check and validate targets without linking
  fish test              Execute all test suites across the workspace
  fish run [TARGET]      Build and run a specific binary target
  fish dev (or watch)    Continuously watch files and trigger incremental rebuilds

Inspect & Understand:
  fish graph             Visualize the DAG as stage trees, DOT, or JSON
  fish why <QUERY>       Ask in natural language why a target was rebuilt
  fish ui                Open the real-time web dashboard & interactive DAG visualizer
  fish doctor            Diagnose installed toolchains, cache integrity, and environment

Maintain & Clean:
  fish clean             Remove project build targets (pass -a/--all to wipe ~/.fish/cache)
  fish fix               AI & compiler-grounded error diagnosis and auto-remediation
  fish ci init           Generate optimized CI/CD workflows (GitHub Actions, GitLab, etc.)
  fish affected          Build or test only packages affected by git changes

๐Ÿ—๏ธ Architecture & Workspace Layout

The engine is structured as a modular Rust workspace (28 crates) maintaining strict boundary isolation:

crates/
  fish-core/         Workspace discovery, manifest model, and DAG merger
  fish-graph/        Dependency graph, topological sort, and query algebra
  fish-executor/     Process execution, middleware chain, and response files
  fish-scheduler/    Parallel work-stealing scheduler, GNU jobserver pool, racing, and DTE
  fish-cache/        Fingerprint cache, two-phase pruning, and morphic hashes
  fish-cas/          Content-addressable artifact storage with BLAKE3 + ZSTD compression
  fish-incremental/  Change detection, AST inference, and dirty rebuild explainer
  fish-backend-*/    11 language and toolchain adapters implementing EcosystemBackend
  fish-worker/       Distributed execution server and streaming VFS protocol
  fish-remote-cache/ High-throughput remote cache server with Ed25519 signature gating
  fish-security/     Multi-layer security, OSV vulnerability scanner, and SLSA provenance
  fish-cli/          Unified command-line application, daemon IPC, and terminal rendering
submodules/          Vendored companion isolation engines:
  apple/             Hermetic sandbox and OS process isolation daemon
  banana/            P2P swarm mesh, OCI container builder, and Merkle ledger
examples/            Ready-to-run polyglot monorepo demonstrations

๐ŸŒฟ Branch Policy

Fish follows a strict branch lifecycle:

dev (active development, tests, features)
  โ†“
  โ†“ verify: cargo test --workspace & cargo clippy
  โ†“
main (stable, production-ready releases)
  • dev โ€” All active work, feature branches, and pull requests land here.
  • main โ€” Stable tagged releases only.

๐Ÿงช Development & Verification

To verify the codebase locally:

cargo fmt --all -- --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace

๐Ÿ“– Documentation & Community


๐Ÿ“„ License & Disclaimer

Fish is licensed under the MIT License.

Disclaimer: This project is an independent build orchestration system. Other unrelated tools, packages, or projects using "fish" in their names (such as fish-shell, fish-image, etc.) are independent and not affiliated with, sponsored, or endorsed by the Fish build orchestration project.

Releases

Packages

Contributors

Languages