back to home

coast-guard / coasts

Localhost service isolation and orchestration for git worktrees.

55 stars
5 forks
9 issues
RustTypeScriptShell

AI Architecture Analysis

This repository is indexed by RepoMind. By analyzing coast-guard/coasts in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.

Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.

Source files are only loaded when you start an analysis to optimize performance.

Embed this Badge

Showcase RepoMind's analysis directly in your repository's README.

[![Analyzed by RepoMind](https://img.shields.io/badge/Analyzed%20by-RepoMind-4F46E5?style=for-the-badge)](https://repomind.in/repo/coast-guard/coasts)
Preview:Analyzed by RepoMind

Repository Overview (README excerpt)

Crawler view

Coasts Coasts (Containerized Hosts) is a CLI tool with a local observability UI for running multiple isolated instances of a full development environment on a single machine. It works out of the box with your current setup: no changes to your existing application code, just a small at your repo root. If you already use Docker Compose, Coasts can boot from your existing ; if you do not use Docker or Compose, Coasts works just as well. Build once and run N instances with whatever volume and networking topology your project needs. Check out one coast at a time to bind canonical ports to your host, and use dynamic ports to peek into the progress of any worktree. Coasts is agnostic to AI providers and agent harnesses. The only host requirement is Git worktrees, so you can switch tools without changing how you work and without any harness-specific environment setup. Coasts is also offline-first with no hosted service dependency, so there is no vendor lock-in risk: even if we disappeared, your local workflow would keep running. Installation Install the latest public release: Visit coasts.dev for the website, docs, and installation instructions. Documentation For the full user-facing documentation, see the Coasts docs. Demo Repo Want a concrete example to explore? Check out the repository for a small demo project you can use to try Coasts end to end. Contributing To contribute, read the contributing guide for PR guidelines. > Note: Coasts is currently macOS-specific. General Linux support is coming shortly. Prerequisites • Rust (stable toolchain) • Docker • Node.js • socat ( on macOS) • Git Dev setup Run the setup script once to build the web UI, compile the workspace, and symlink / into : On first run it adds to your PATH — restart your shell or to pick it up. Dev mode uses and port 31416, so it never conflicts with a global coast install on port 31415. Day-to-day development workflow You'll want three terminals: **Terminal 1 — dev daemon:** After Rust changes are rebuilt by , restart the daemon to pick them up: **Terminal 2 — Rust rebuild on save:** This runs and recompiles the workspace whenever Rust source files change. After a rebuild completes, restart the daemon in Terminal 1. **Terminal 3 — web UI with hot reload:** This starts the Vite dev server on with hot module replacement, proxying requests to the dev daemon at . > Use (without ) if you're developing the UI against a production daemon on port 31415. Makefile targets The Makefile is the primary entry point for development tasks: | Command | What it does | |---------|-------------| | | Check formatting ( ) and run | | | Auto-format and auto-fix clippy warnings | | | Run the full unit test suite across all workspace crates | | | + in sequence | | | Generate an HTML coverage report and open it | | | Rebuild on source changes (requires ) | Coast Guard (web UI) Generating TypeScript types The web UI depends on TypeScript types generated from Rust structs via . After changing any Rust types that are used by the UI, regenerate the bindings: This runs and rebuilds the barrel file in . Generating the docs manifest The docs viewer in the UI reads from a generated manifest. After changing any markdown files in , regenerate it: Docs localization and search indexes Translation and search index generation are centralized Python scripts invoked via the Makefile: Both scripts read from the environment or from in the project root. See . Testing Unit tests Runs across all crates. Integration tests Integration tests live in and exercise full end-to-end coast workflows. They are useful for validating real behavior but come with practical costs: they require Docker running, socat installed, and a release build. Each test spins up real DinD containers, so a full run can consume significant disk space and you may need to periodically to reclaim it. For the full list of tests, prerequisites, and cleanup guidance, see the integrated-examples README. Quick usage: Project Structure Building from source Binaries are placed in : • -- the CLI client • -- the background daemon Contributors • @jamiesunderland • @dahyman91 • @agustif • @clarkerican Original History This project started in another repository and had some of its history squashed. Please see the original repo here for the full commit history.