Home
Softono
a

av

Professional software vendor delivering innovative solutions on the Softono platform. Specialized in both open-source and proprietary software development.

Total Products
2

Software by av

LLM Harbor
Open Source

LLM Harbor

https://github.com/user-attachments/assets/e4897391-c5a8-4391-93c3-9f8b76155f11 [![GitHub Tag](https://img.shields.io/github/v/tag/av/harbor)](https://github.com/av/harbor/releases) ![GitHub repo size](https://img.shields.io/github/repo-size/av/harbor) ![GitHub repo file or directory count](https://img.shields.io/github/directory-file-count/av/harbor?type=file&extension=yml&label=compose%20files&color=orange) ![GitHub language count](https://img.shields.io/github/languages/count/av/harbor) [![Visitors](https://api.visitorbadge.io/api/visitors?path=av%2Fharbor&countColor=%23263759&style=flat)](https://visitorbadge.io/status?path=av%2Fharbor) [![Discord](https://img.shields.io/badge/Discord-Harbor-blue?logo=discord&logoColor=white)](https://discord.gg/8nDRphrhSF) ![Harbor Ko-fi](https://img.shields.io/badge/Ko--fi-white?style=social&logo=kofi) [![ask](https://img.shields.io/badge/ask-claude-252421?style=flat&labelColor=555)](https://textclip.sh?ask=claude#c=TZTNjiM1EIDveQofga2N4LJCkQZpZ2AAaVZCzBNU29XdtSm7PLY7P2QjjYQUshyjleC6J8S8Bnd4h34S5E4GcbH6p7r8lb-q_g5To2l8__Hm7vvx-PQ6xsXXapeUbtRHzTQeTqIW5e7ujRni-OvPa2oGfqEi6PEFpm41m_39YfETJX1pNbTcjcfHNScOnfnCejceTu0gkgvapcGhTFGBbBmPj7truIX7vYlJWxa6X2M09La-O5xyweBQNJApQwgk4-HEoVAKVMxDGg8nrw0LmfH4p0Xbk_nn8ZOK86npORfz12_2XIB5dz0en27H49P9u69efT6bXV_tzvQwrTZGWIl4KB1DwabZYmTA2Cd1XAg855JQUobcCYYOliVhyK0mTymDeEdRdAvIqWYJtEFYaqPiwKsbBJPHDeRIFTJDxCSU9rdXu-kgQbhJZHssUJf6QJvzfX-hrF9MFw1rYNvFAhi2pefQ1Q1rbGAFz8shogMtlDxY9e124P391S4Tpk3oIFKKQhu2CI7bLUTB4GgDwoVqolpcO2QCjRwK2NaB9a6HFpvEFpAdJUCe2KrICiKeVijwdojbQgk0UugxuFyTyrawzZAoakS7hPBlgEalQORIwoEyPLiEocDyFcSkPpZWFdbUFI2gPnDElClBK7rmTGdA0TVoLFyJvabYs4X8IBNVF4snKAmp5SUIFgolW40ECbta5tl4XmM8n_tkssaBp4LeRvA2KohLMDU9MmBHodTuroLXhCsCp1Y4dNAkXWdK9ciGkEVLD2sOzrMINBRsD41qLvvZbFI9_vLh2lxkjIfTxf_F-nMp_5MkLu0XP77-1jz3zmKlbMlc1C7Yd-aCPR7_qOCLNzc_jIfTlHg22w0RnK4DxCohF0wFRLsMtCELuaeKObC4SRsMSeAhwXnY9tmch3m-E-gg75er5ymd7zIMIHuT5zuvjgQwdXlv-na-azk4cALZYtibc__OP_tvprdezsN5_i-Mx99ns282UZCDKT3nukUNNUWNp_m_) [![ask](https://img.shields.io/badge/ask-chatgpt-252421?style=flat&labelColor=555)](https://textclip.sh?ask=chatgpt#c=TZTNjiM1EIDveQofga2N4LJCkQZpZ2AAaVZCzBNU29XdtSm7PLY7P2QjjYQUshyjleC6J8S8Bnd4h34S5E4GcbH6p7r8lb-q_g5To2l8__Hm7vvx-PQ6xsXXapeUbtRHzTQeTqIW5e7ujRni-OvPa2oGfqEi6PEFpm41m_39YfETJX1pNbTcjcfHNScOnfnCejceTu0gkgvapcGhTFGBbBmPj7truIX7vYlJWxa6X2M09La-O5xyweBQNJApQwgk4-HEoVAKVMxDGg8nrw0LmfH4p0Xbk_nn8ZOK86npORfz12_2XIB5dz0en27H49P9u69efT6bXV_tzvQwrTZGWIl4KB1DwabZYmTA2Cd1XAg855JQUobcCYYOliVhyK0mTymDeEdRdAvIqWYJtEFYaqPiwKsbBJPHDeRIFTJDxCSU9rdXu-kgQbhJZHssUJf6QJvzfX-hrF9MFw1rYNvFAhi2pefQ1Q1rbGAFz8shogMtlDxY9e124P391S4Tpk3oIFKKQhu2CI7bLUTB4GgDwoVqolpcO2QCjRwK2NaB9a6HFpvEFpAdJUCe2KrICiKeVijwdojbQgk0UugxuFyTyrawzZAoakS7hPBlgEalQORIwoEyPLiEocDyFcSkPpZWFdbUFI2gPnDElClBK7rmTGdA0TVoLFyJvabYs4X8IBNVF4snKAmp5SUIFgolW40ECbta5tl4XmM8n_tkssaBp4LeRvA2KohLMDU9MmBHodTuroLXhCsCp1Y4dNAkXWdK9ciGkEVLD2sOzrMINBRsD41qLvvZbFI9_vLh2lxkjIfTxf_F-nMp_5MkLu0XP77-1jz3zmKlbMlc1C7Yd-aCPR7_qOCLNzc_jIfTlHg22w0RnK4DxCohF0wFRLsMtCELuaeKObC4SRsMSeAhwXnY9tmch3m-E-gg75er5ymd7zIMIHuT5zuvjgQwdXlv-na-azk4cALZYtibc__OP_tvprdezsN5_i-Mx99ns282UZCDKT3nukUNNUWNp_m_) [![ask](https://img.shields.io/badge/ask-perplexity-252421?style=flat&labelColor=555)](https://textclip.sh?ask=perplexity#c=TZTNjiM1EIDveQofga2N4LJCkQZpZ2AAaVZCzBNU29XdtSm7PLY7P2QjjYQUshyjleC6J8S8Bnd4h34S5E4GcbH6p7r8lb-q_g5To2l8__Hm7vvx-PQ6xsXXapeUbtRHzTQeTqIW5e7ujRni-OvPa2oGfqEi6PEFpm41m_39YfETJX1pNbTcjcfHNScOnfnCejceTu0gkgvapcGhTFGBbBmPj7truIX7vYlJWxa6X2M09La-O5xyweBQNJApQwgk4-HEoVAKVMxDGg8nrw0LmfH4p0Xbk_nn8ZOK86npORfz12_2XIB5dz0en27H49P9u69efT6bXV_tzvQwrTZGWIl4KB1DwabZYmTA2Cd1XAg855JQUobcCYYOliVhyK0mTymDeEdRdAvIqWYJtEFYaqPiwKsbBJPHDeRIFTJDxCSU9rdXu-kgQbhJZHssUJf6QJvzfX-hrF9MFw1rYNvFAhi2pefQ1Q1rbGAFz8shogMtlDxY9e124P391S4Tpk3oIFKKQhu2CI7bLUTB4GgDwoVqolpcO2QCjRwK2NaB9a6HFpvEFpAdJUCe2KrICiKeVijwdojbQgk0UugxuFyTyrawzZAoakS7hPBlgEalQORIwoEyPLiEocDyFcSkPpZWFdbUFI2gPnDElClBK7rmTGdA0TVoLFyJvabYs4X8IBNVF4snKAmp5SUIFgolW40ECbta5tl4XmM8n_tkssaBp4LeRvA2KohLMDU9MmBHodTuroLXhCsCp1Y4dNAkXWdK9ciGkEVLD2sOzrMINBRsD41qLvvZbFI9_vLh2lxkjIfTxf_F-nMp_5MkLu0XP77-1jz3zmKlbMlc1C7Yd-aCPR7_qOCLNzc_jIfTlHg22w0RnK4DxCohF0wFRLsMtCELuaeKObC4SRsMSeAhwXnY9tmch3m-E-gg75er5ymd7zIMIHuT5zuvjgQwdXlv-na-azk4cALZYtibc__OP_tvprdezsN5_i-Mx99ns282UZCDKT3nukUNNUWNp_m_) [![ask](https://img.shields.io/badge/ask-Harbor-252421?style=flat&labelColor=555)](https://textclip.sh?failmsg=It%20appears%20that%20you%20do%20not%20have%20Harbor%20installed%2C%20or%20Open%20WebUI%20is%20not%20running%20on%20default%20port&redirect=http%3A%2F%2Flocalhost%3A33801%3Fq%3D__TEXT__#c=TZTNjiM1EIDveQofga2N4LJCkQZpZ2AAaVZCzBNU29XdtSm7PLY7P2QjjYQUshyjleC6J8S8Bnd4h34S5E4GcbH6p7r8lb-q_g5To2l8__Hm7vvx-PQ6xsXXapeUbtRHzTQeTqIW5e7ujRni-OvPa2oGfqEi6PEFpm41m_39YfETJX1pNbTcjcfHNScOnfnCejceTu0gkgvapcGhTFGBbBmPj7truIX7vYlJWxa6X2M09La-O5xyweBQNJApQwgk4-HEoVAKVMxDGg8nrw0LmfH4p0Xbk_nn8ZOK86npORfz12_2XIB5dz0en27H49P9u69efT6bXV_tzvQwrTZGWIl4KB1DwabZYmTA2Cd1XAg855JQUobcCYYOliVhyK0mTymDeEdRdAvIqWYJtEFYaqPiwKsbBJPHDeRIFTJDxCSU9rdXu-kgQbhJZHssUJf6QJvzfX-hrF9MFw1rYNvFAhi2pefQ1Q1rbGAFz8shogMtlDxY9e124P391S4Tpk3oIFKKQhu2CI7bLUTB4GgDwoVqolpcO2QCjRwK2NaB9a6HFpvEFpAdJUCe2KrICiKeVijwdojbQgk0UugxuFyTyrawzZAoakS7hPBlgEalQORIwoEyPLiEocDyFcSkPpZWFdbUFI2gPnDElClBK7rmTGdA0TVoLFyJvabYs4X8IBNVF4snKAmp5SUIFgolW40ECbta5tl4XmM8n_tkssaBp4LeRvA2KohLMDU9MmBHodTuroLXhCsCp1Y4dNAkXWdK9ciGkEVLD2sOzrMINBRsD41qLvvZbFI9_vLh2lxkjIfTxf_F-nMp_5MkLu0XP77-1jz3zmKlbMlc1C7Yd-aCPR7_qOCLNzc_jIfTlHg22w0RnK4DxCohF0wFRLsMtCELuaeKObC4SRsMSeAhwXnY9tmch3m-E-gg75er5ymd7zIMIHuT5zuvjgQwdXlv-na-azk4cALZYtibc__OP_tvprdezsN5_i-Mx99ns282UZCDKT3nukUNNUWNp_m_) Setup your local LLM stack effortlessly. ```bash # Starts fully configured Open WebUI and Ollama harbor up # Now, Open WebUI can do Web RAG and TTS/STT harbor up searxng speaches ``` Harbor is a CLI and companion app that lets you spin up a complete local LLM stack—backends like Ollama, llama.cpp, or vLLM, frontends like Open WebUI, plus supporting services like SearXNG for web search, Speaches for voice chat, and ComfyUI for image generation—all pre-wired to work together with a single `harbor up` command. No manual setup: just pick the services you want and Harbor handles the Docker Compose orchestration, configuration, and cross-service connectivity so you can focus on actually using your models. ![Screenshot of Harbor CLI and App together](https://github.com/av/harbor/wiki/harbor-app-3.png) ## News - **v0.4.19** - Boost Anthropic and Responses API compat layers, `harbor launch` command, ik_llama.cpp service, Boost workflows and tools module - **v0.4.18** - Open Design and Voicebox services, with local design workflows, voice generation, Harbor backend integrations, and `harbor how` backed by mi - **v0.4.17** - Needle and npcsh services, with OpenAI-compatible tool-calling, CLI launch support, and npcsh backend/frontend integrations - **v0.4.16** - ML Intern, facts, and mi services, with smarter ML Intern llama.cpp model selection and local backend integrations - **v0.4.15** - Lemonade and Tokscale services, TabbyAPI official image and model fixes, profile security hardening - **v0.4.14** - Bifrost AI gateway and SurfSense research workspace, Harbor CLI sidecar integrations, and Unsloth Studio portability fixes - **v0.4.13** - Unsloth Studio service with zero-click API key bootstrap and six cross-integrations, workspace-init sidecar pattern rolled out across 17 services for host-user-owned bind mounts ## Documentation - [Installing Harbor](https://github.com/av/harbor/wiki/1.0.-Installing-Harbor)<br/> Guides to install Harbor CLI and App, including the [agent install prompt](./install.md) for Claude Code, Codex, and similar tools - [Harbor User Guide](https://github.com/av/harbor/wiki/1.-Harbor-User-Guide)<br/> High-level overview of working with Harbor - [Harbor App](https://github.com/av/harbor/wiki/1.1-Harbor-App)<br/> Overview and manual for the Harbor companion application - [Harbor Services](https://github.com/av/harbor/wiki/2.-Services)<br/> Catalog of services available in Harbor - [Harbor CLI Reference](https://github.com/av/harbor/wiki/3.-Harbor-CLI-Reference)<br/> Read more about Harbor CLI commands and options. Read about supported services and the ways to configure them. - [Harbor Guides](https://github.com/av/harbor/wiki/8.-Guides)<br/> Practical guides for local LLM stack setup, local web RAG, coding agents, OpenAI-compatible backends, and self-hosted AI stack planning. - [Join our Discord](https://discord.gg/8nDRphrhSF)<br/> Get help, share your experience, and contribute to the project. ## What can Harbor do? ![Diagram outlining Harbor's service structure](https://raw.githubusercontent.com/wiki/av/harbor/harbor-arch-diag.png) #### ✦ Local LLMs Run LLMs and related services locally, with no or minimal configuration, typically in a single command or click. ```bash # All backends are pre-connected to Open WebUI harbor up ollama harbor up llamacpp harbor up vllm # Host-native Metal/GPU inference on macOS harbor up dmr harbor up mlx harbor up omlx # Set and remember args for llama.cpp harbor llamacpp args -ngl 32 ``` #### Local Coding Tools Use Harbor backends from installed coding and agent CLIs without hand-editing each tool's provider config. [`harbor launch`](./docs/3.-Harbor-CLI-Reference.md#harbor-launch-launch-options---service-servicetool-args) starts or detects a Harbor OpenAI-compatible backend, wires the selected model into the host tool, and leaves the tool running in your current project directory. ```bash # Run Codex against an explicit Harbor backend and model harbor launch --backend ollama --model qwen3.5:4b codex # Add Harbor Boost web search and URL-reading tools harbor launch --web --backend ollama --model qwen3.5:4b codex # Write adapter config without starting the tool harbor launch --config opencode # Force the container service when a name also has a host adapter harbor launch --service opencode --help ``` Supported host tools include `claude`, `codex`, `copilot`, `droid`, `hermes`, `mi`, `openclaw`, `opencode`, `pi`, `pool`, and `vscode`. #### Cutting Edge Inference Harbor supports most of the major inference engines as well as a few of the lesser-known ones. On macOS, [Docker Model Runner](./docs/2.2.22-Backend-Docker-Model-Runner.md), [MLX](./docs/2.2.23-Backend-MLX.md), and [oMLX](./docs/2.2.24-Backend-oMLX.md) run inference on the host with Metal acceleration — no containers needed for the compute. ```bash # We sincerely hope you'll never try to run all of them at once harbor up vllm llamacpp tgi litellm tabbyapi aphrodite sglang ktransformers mistralrs airllm # Host-native inference (macOS Metal / Linux GPU) harbor up dmr mlx omlx ``` #### Tool Use Enjoy the benefits of MCP ecosystem, extend it to your use-cases. ```bash # Manage MCPs with a convenient Web UI harbor up metamcp # Connect MCPs to Open WebUI harbor up metamcp mcpo ``` #### Generate Images Harbor includes ComfyUI + Flux + Open WebUI integration. ```bash # Use FLUX in Open WebUI in one command harbor up comfyui ``` #### Local Web RAG / Deep Research Harbor includes [SearXNG](./docs/2.3.1-Satellite&colon-SearXNG.md) that is pre-connected to a lot of services out of the box: [Perplexica](./docs/2.3.2-Satellite&colon-Perplexica.md), [ChatUI](./docs/2.1.4-Frontend&colon-ChatUI.md), [Morphic](./docs/2.3.34-Satellite-Morphic.md), [Local Deep Research](./docs/2.3.45-Satellite-Local-Deep-Research.md) and more. ```bash # SearXNG is pre-connected to Open WebUI harbor up searxng # And to many other services harbor up searxng chatui harbor up searxng morphic harbor up searxng perplexica harbor up searxng ldr ``` #### LLM Workflows Harbor includes multiple services for build LLM-based data and chat workflows: [Dify](./docs/2.3.3-Satellite&colon-Dify.md), [LitLytics](./docs/2.3.21-Satellite&colon-LitLytics.md), [n8n](./docs/2.3.23-Satellite&colon-n8n.md), [Open WebUI Pipelines](./docs/2.3.25-Satellite&colon-Open-WebUI-Pipelines.md), [FloWise](./docs/2.3.31-Satellite&colon-Flowise.md), [LangFlow](./docs/2.3.32-Satellite&colon-LangFlow.md) ```bash # Use Dify in Open WebUI harbor up dify ``` #### Talk to your LLM Setup voice chats with your LLM in a single command. Open WebUI + Speaches ```bash # Speaches includes OpenAI-compatible SST and TTS # and connected to Open WebUI out of the box harbor up speaches ``` #### Chat from the phone You can access Harbor services from your phone with a QR code. Easily get links for local, LAN or Docker access. ```bash # Print a QR code to open the service on your phone harbor qr # Print a link to open the service on your phone harbor url webui ``` #### Chat from anywhere Harbor includes a [built-in tunneling service](./docs/3.-Harbor-CLI-Reference.md#harbor-tunnel-service) to expose your Harbor to the internet. > [!WARN] > Be careful exposing your computer to the Internet, it's not safe. ```bash # Expose default UI to the internet harbor tunnel # Expose a specific service to the internet # ⚠️ Ensure to configure authentication for the service harbor tunnel vllm # Harbor comes with traefik built-in and pre-configured # for all included services harbor up traefik ``` #### LLM Scripting [Harbor Boost](./docs/5.2.-Harbor-Boost.md) allows you to [easily script workflows](./docs/5.2.1.-Harbor-Boost-Custom-Modules.md) and interactions with downstream LLMs. ```bash # Use Harbor Boost to script LLM workflows harbor up boost ``` #### Config Profiles Save and manage configuration profiles for different scenarios. For example - save [llama.cpp](./docs/2.2.2-Backend&colon-llama.cpp.md) args for different models and contexts and switch between them easily. ```bash # Save and use config profiles harbor profile save llama4 harbor profile use default # Import profiles from a URL harbor profile use https://example.com/path/to/harbor-profile.env ``` #### Command History Harbor keeps a [local-only history of recent commands](./docs/3.-Harbor-CLI-Reference.md#harbor-history). Look up and re-run easily, standalone from the system shell history. ```bash # Lookup recently used harbor commands harbor history ``` #### Eject Ready to move to your own setup? Harbor [will give you](./docs/3.-Harbor-CLI-Reference.md#harbor-eject) a docker-compose file replicating your setup. ```bash # Eject from Harbor into a standalone Docker Compose setup # Will export related services and variables into a standalone file. harbor eject searxng llamacpp > docker-compose.harbor.yml ``` --- ## Services ##### UIs [AnythingLLM](https://github.com/av/harbor/wiki/2.1.9-Frontend:-AnythingLLM) ⦁︎ [AstrBot](https://github.com/av/harbor/wiki/2.3.63-Satellite-AstrBot) ⦁︎ [BionicGPT](https://github.com/av/harbor/wiki/2.1.8-Frontend:-BionicGPT) ⦁︎ [Chat Nio](https://github.com/av/harbor/wiki/2.1.10-Frontend:-Chat-Nio) [ComfyUI](https://github.com/av/harbor/wiki/2.1.2-Frontend:-ComfyUI) ⦁︎ [Hollama](https://github.com/av/harbor/wiki/2.1.6-Frontend:-hollama) ⦁︎ [HuggingFace ChatUI](https://github.com/av/harbor/wiki/2.1.4-Frontend:-ChatUI) ⦁︎ [KoboldCpp](https://github.com/av/harbor/wiki/2.2.16-Backend:-KoboldCpp) [LibreChat](https://github.com/av/harbor/wiki/2.1.3-Frontend:-LibreChat) ⦁︎ [Lobe Chat](https://github.com/av/harbor/wiki/2.1.5-Frontend:-Lobe-Chat) ⦁︎ [Mikupad](https://github.com/av/harbor/wiki/2.1.11-Frontend:-Mikupad) ⦁︎ [ol1](https://github.com/av/harbor/wiki/2.3.19-Satellite:-ol1) [Omnichain](https://github.com/av/harbor/wiki/2.3.16-Satellite:-omnichain) ⦁︎ [Onyx](https://github.com/av/harbor/wiki/2.1.14-Frontend-Onyx) ⦁︎ [Open WebUI](https://github.com/av/harbor/wiki/2.1.1-Frontend:-Open-WebUI) ⦁︎ [oterm](https://github.com/av/harbor/wiki/2.1.12-Frontend-oterm) [Parllama](https://github.com/av/harbor/wiki/2.1.7-Frontend:-parllama) ⦁︎ [SillyTavern](https://github.com/av/harbor/wiki/2.1.15-Frontend-SillyTavern) ⦁︎ [Voicebox](https://github.com/av/harbor/wiki/2.1.16-Frontend-Voicebox) ##### Backends [AirLLM](https://github.com/av/harbor/wiki/2.2.11-Backend:-AirLLM) ⦁︎ [Aphrodite](https://github.com/av/harbor/wiki/2.2.5-Backend:-Aphrodite-Engine) ⦁︎ [faster-whisper-server](https://github.com/av/harbor/wiki/2.2.14-Backend:-Speaches) ⦁︎ [ik_llama.cpp](https://github.com/av/harbor/wiki/2.2.21-Backend-ik_llama.cpp) [KoboldCpp](https://github.com/av/harbor/wiki/2.2.16-Backend:-KoboldCpp) ⦁︎ [KTransformers](https://github.com/av/harbor/wiki/2.2.13-Backend:-KTransformers) ⦁︎ [Lemonade](https://github.com/av/harbor/wiki/2.2.19-Backend-Lemonade) ⦁︎ [llama.cpp](https://github.com/av/harbor/wiki/2.2.2-Backend:-llama.cpp) [lmdeploy](https://github.com/av/harbor/wiki/2.2.10-Backend:-lmdeploy) ⦁︎ [mistral.rs](https://github.com/av/harbor/wiki/2.2.6-Backend:-mistral.rs) ⦁︎ [Modular MAX](https://github.com/av/harbor/wiki/2.2.17-Backend-Modular-MAX) ⦁︎ [Needle](https://github.com/av/harbor/wiki/2.2.20-Backend-Needle) [Nexa SDK](https://github.com/av/harbor/wiki/2.2.15-Backend:-Nexa-SDK) ⦁︎ [Ollama](https://github.com/av/harbor/wiki/2.2.1-Backend:-Ollama) ⦁︎ [openedai-speech](https://github.com/av/harbor/wiki/2.2.7-Backend:-openedai-speech) ⦁︎ [Parler](https://github.com/av/harbor/wiki/2.2.8-Backend:-Parler) [Docker Model Runner](https://github.com/av/harbor/wiki/2.2.22-Backend-Docker-Model-Runner) ⦁︎ [MLX](https://github.com/av/harbor/wiki/2.2.23-Backend-MLX) ⦁︎ [oMLX](https://github.com/av/harbor/wiki/2.2.24-Backend-oMLX) ⦁︎ [SGLang](https://github.com/av/harbor/wiki/2.2.12-Backend:-SGLang) ⦁︎ [Speaches](https://github.com/av/harbor/wiki/2.2.14-Backend:-Speaches) [TabbyAPI](https://github.com/av/harbor/wiki/2.2.4-Backend:-TabbyAPI) ⦁︎ [Text Generation Inference](https://github.com/av/harbor/wiki/2.2.9-Backend:-text-generation-inference) ⦁︎ [vLLM](https://github.com/av/harbor/wiki/2.2.3-Backend:-vLLM) ##### Satellites [Activepieces](https://github.com/av/harbor/wiki/2.3.64-Satellite-Activepieces) ⦁︎ [Agent Zero](https://github.com/av/harbor/wiki/2.3.47-Satellite-Agent-Zero) ⦁︎ [aichat](https://github.com/av/harbor/wiki/2.3.14-Satellite:-aichat) ⦁︎ [Aider](https://github.com/av/harbor/wiki/2.3.13-Satellite:-aider) [Airweave](https://github.com/av/harbor/wiki/2.3.48-Satellite-Airweave) ⦁︎ [AstrBot](https://github.com/av/harbor/wiki/2.3.63-Satellite-AstrBot) ⦁︎ [autogpt](https://github.com/av/harbor/wiki/2.3.15-Satellite:-AutoGPT) ⦁︎ [Beszel](https://github.com/av/harbor/wiki/2.3.82-Satellite-Beszel) [Bifrost](https://github.com/av/harbor/wiki/2.3.84-Satellite-Bifrost) ⦁︎ [Bolt.new](https://github.com/av/harbor/wiki/2.3.24-Satellite:-Bolt.new) ⦁︎ [Browser Use](https://github.com/av/harbor/wiki/2.3.50-Satellite-Browser-Use) ⦁︎ [cloudflared](https://github.com/av/harbor/wiki/2.3.8-Satellite:-cloudflared) [cmdh](https://github.com/av/harbor/wiki/2.3.9-Satellite:-cmdh) ⦁︎ [Cognee](https://github.com/av/harbor/wiki/2.3.74-Satellite-Cognee) ⦁︎ [DBHub](https://github.com/av/harbor/wiki/2.3.81-Satellite-DBHub) ⦁︎ [DeerFlow](https://github.com/av/harbor/wiki/2.3.65-Satellite-DeerFlow) [Dify](https://github.com/av/harbor/wiki/2.3.3-Satellite:-Dify) ⦁︎ [Docling](https://github.com/av/harbor/wiki/2.3.49-Satellite-Docling) ⦁︎ [Drawio](https://github.com/av/harbor/wiki/2.3.56-Satellite-Drawio) ⦁︎ [Fabric](https://github.com/av/harbor/wiki/2.3.10-Satellite:-fabric) [facts](https://github.com/av/harbor/wiki/2.3.88-Satellite-Facts) ⦁︎ [Flowise](https://github.com/av/harbor/wiki/2.3.31-Satellite:-Flowise) ⦁︎ [gptme](https://github.com/av/harbor/wiki/2.3.36-Satellite-gptme) ⦁︎ [Harbor Bench](https://github.com/av/harbor/wiki/5.1.-Harbor-Bench) [Harbor Boost](https://github.com/av/harbor/wiki/5.2.-Harbor-Boost) ⦁︎ [Hermes Agent](https://github.com/av/harbor/wiki/2.3.76-Satellite-Hermes-Agent) ⦁︎ [Home Assistant](https://github.com/av/harbor/wiki/2.3.60-Satellite-Home-Assistant) ⦁︎ [JupyterLab](https://github.com/av/harbor/wiki/2.3.18-Satellite:-JupyterLab) [K6](https://github.com/av/harbor/wiki/2.3.27-Satellite:-K6) ⦁︎ [Karakeep](https://github.com/av/harbor/wiki/2.3.53-Satellite-Karakeep) ⦁︎ [Khoj](https://github.com/av/harbor/wiki/2.3.67-Satellite-Khoj) ⦁︎ [KoboldCpp](https://github.com/av/harbor/wiki/2.2.16-Backend:-KoboldCpp) [Kotaemon](https://github.com/av/harbor/wiki/2.3.61-Satellite-Kotaemon) ⦁︎ [LangFlow](https://github.com/av/harbor/wiki/2.3.32-Satellite:-LangFlow) ⦁︎ [LangFuse](https://github.com/av/harbor/wiki/2.3.6-Satellite:-langfuse) ⦁︎ [Latent Scope](https://github.com/av/harbor/wiki/2.3.38-Satellite-Latent-Scope) [LibreTranslate](https://github.com/av/harbor/wiki/2.3.41-Satellite-libretranslate) ⦁︎ [LiteLLM](https://github.com/av/harbor/wiki/2.3.5-Satellite:-LiteLLM) ⦁︎ [LitLytics](https://github.com/av/harbor/wiki/2.3.21-Satellite:-LitLytics) ⦁︎ [llama-swap](https://github.com/av/harbor/wiki/2.3.40-Satellite-llamaswap) [lm-evaluation-harness](https://github.com/av/harbor/wiki/2.3.17-Satellite:-lm-evaluation-harness) ⦁︎ [Local Deep Research](https://github.com/av/harbor/wiki/2.3.45-Satellite-Local-Deep-Research) ⦁︎ [LocalAI](https://github.com/av/harbor/wiki/2.3.46-Satellite-LocalAI) ⦁︎ [MCP Forge](https://github.com/av/harbor/wiki/2.3.62-Satellite-MCP-Forge) [mcpo](https://github.com/av/harbor/wiki/2.3.43-Satellite-mcpo) ⦁︎ [MetaMCP](https://github.com/av/harbor/wiki/2.3.42-Satellite-metamcp) ⦁︎ [mi](https://github.com/av/harbor/wiki/2.3.89-Satellite-mi) ⦁︎ [MindsDB](https://github.com/av/harbor/wiki/2.3.57-Satellite-MindsDB) [ML Intern](https://github.com/av/harbor/wiki/2.3.87-Satellite-ML-Intern) ⦁︎ [Morphic](https://github.com/av/harbor/wiki/2.3.34-Satellite-Morphic) ⦁︎ [n8n](https://github.com/av/harbor/wiki/2.3.23-Satellite:-n8n) ⦁︎ [nanobot](https://github.com/av/harbor/wiki/2.3.71-Satellite-nanobot) [Netdata](https://github.com/av/harbor/wiki/2.3.54-Satellite-Netdata) ⦁︎ [npcsh](https://github.com/av/harbor/wiki/2.3.90-Satellite-npcsh) ⦁︎ [OmniParser](https://github.com/av/harbor/wiki/2.3.30-Satellite:-OmniParser) ⦁︎ [Open Design](https://github.com/av/harbor/wiki/2.3.91-Satellite-Open-Design) [Open Interpreter](https://github.com/av/harbor/wiki/2.3.7-Satellite:-Open-Interpreter) ⦁︎ [Open Notebook](https://github.com/av/harbor/wiki/2.3.59-Satellite-Open-Notebook) ⦁︎ [Open Terminal](https://github.com/av/harbor/wiki/2.3.75-Satellite-Open-Terminal) ⦁︎ [Open WebUI Pipelines](https://github.com/av/harbor/wiki/2.3.25-Satellite:-Open-WebUI-Pipelines) [OpenClaw](https://github.com/av/harbor/wiki/2.3.70-Satellite-OpenClaw) ⦁︎ [OpenCode](https://github.com/av/harbor/wiki/2.3.68-Satellite-OpenCode) ⦁︎ [OpenFang](https://github.com/av/harbor/wiki/2.3.73-Satellite-OpenFang) ⦁︎ [OpenHands](https://github.com/av/harbor/wiki/2.3.20-Satellite:-OpenHands) [OptiLLM](https://github.com/av/harbor/wiki/2.3.33-Satellite:-OptiLLM) ⦁︎ [Perplexica](https://github.com/av/harbor/wiki/2.3.2-Satellite:-Perplexica) ⦁︎ [PhotoPrism](https://github.com/av/harbor/wiki/2.3.66-Satellite-PhotoPrism) ⦁︎ [Plandex](https://github.com/av/harbor/wiki/2.3.4-Satellite:-Plandex) [Postiz](https://github.com/av/harbor/wiki/2.3.72-Satellite-Postiz) ⦁︎ [Presenton](https://github.com/av/harbor/wiki/2.1.13-Frontend-Presenton) ⦁︎ [Promptfoo](https://github.com/av/harbor/wiki/2.3.28-Satellite:-Promptfoo) ⦁︎ [Qdrant](https://github.com/av/harbor/wiki/2.3.26-Satellite:-Qdrant) [RAGLite](https://github.com/av/harbor/wiki/2.3.39-Satellite-RAGLite) ⦁︎ [Repopack](https://github.com/av/harbor/wiki/2.3.22-Satellite:-Repopack) ⦁︎ [Resume Matcher](https://github.com/av/harbor/wiki/2.3.55-Satellite-Resume-Matcher) ⦁︎ [ROS MCP Server](https://github.com/av/harbor/wiki/2.3.78-Satellite-ROS-MCP-Server) [SearXNG](https://github.com/av/harbor/wiki/2.3.1-Satellite:-SearXNG) ⦁︎ [Sim Studio](https://github.com/av/harbor/wiki/2.3.58-Satellite-Sim-Studio) ⦁︎ [Solo CLI](https://github.com/av/harbor/wiki/2.3.77-Satellite-Solo-CLI) ⦁︎ [SQL Chat](https://github.com/av/harbor/wiki/2.3.35-Satellite-SQL-Chat) [SuperGateway](https://github.com/av/harbor/wiki/2.3.44-Satellite-supergateway) ⦁︎ [SurfSense](https://github.com/av/harbor/wiki/2.3.85-Satellite-SurfSense) ⦁︎ [TextGrad](https://github.com/av/harbor/wiki/2.3.12-Satellite:-TextGrad) ⦁︎ [tokscale](https://github.com/av/harbor/wiki/2.3.86-Satellite-Tokscale) [Traefik](https://github.com/av/harbor/wiki/2.3.37-Satellite-traefik) ⦁︎ [txtai RAG](https://github.com/av/harbor/wiki/2.3.11-Satellite:-txtai-RAG) ⦁︎ [Unsloth](https://github.com/av/harbor/wiki/2.3.51-Satellite-Unsloth) ⦁︎ [Unsloth Studio](https://github.com/av/harbor/wiki/2.3.83-Satellite-Unsloth-Studio) [Webtop](https://github.com/av/harbor/wiki/2.3.29-Satellite:-Webtop) ⦁︎ [Windmill](https://github.com/av/harbor/wiki/2.3.52-Satellite-Windmill) See [services documentation](https://github.com/av/harbor/wiki/2.-Services) for a brief overview of each. ## CLI Tour ```bash # Run Harbor with default services: # Open WebUI and Ollama harbor up # Run Harbor with additional services # Running SearXNG automatically enables Web RAG in Open WebUI harbor up searxng # Speaches includes OpenAI-compatible SST and TTS # and connected to Open WebUI out of the box harbor up speaches # Run additional/alternative LLM Inference backends # Open Webui is automatically connected to them. harbor up llamacpp tgi litellm vllm tabbyapi aphrodite sglang ktransformers # Host-native backends for macOS (Metal acceleration, no containers) harbor up dmr harbor up mlx harbor up omlx # Run different Frontends harbor up librechat chatui bionicgpt hollama # Get a free quality boost with # built-in optimizing proxy harbor up boost # Use FLUX in Open WebUI in one command harbor up comfyui # Use custom models for supported backends harbor llamacpp model https://huggingface.co/user/repo/model.gguf # Manage models for host-native backends harbor dmr pull ai/mistral harbor dmr ls harbor mlx pull mlx-community/Qwen3.5-4B-4bit harbor omlx pull mlx-community/Qwen3.5-4B-4bit # Access service CLIs without installing them # Caches are shared between services where possible harbor hf scan-cache harbor hf download google/gemma-2-2b-it harbor ollama list # Shortcut to HF Hub to find the models harbor hf find gguf gemma-2 # Use HFDownloader and official HF CLI to download models harbor hf dl -m google/gemma-2-2b-it -c 10 -s ./hf harbor hf download google/gemma-2-2b-it # Where possible, cache is shared between the services harbor tgi model google/gemma-2-2b-it harbor vllm model google/gemma-2-2b-it harbor aphrodite model google/gemma-2-2b-it harbor tabbyapi model google/gemma-2-2b-it-exl2 harbor mistralrs model google/gemma-2-2b-it harbor opint model google/gemma-2-2b-it harbor sglang model google/gemma-2-2b-it # Convenience tools for docker setup harbor logs llamacpp harbor exec llamacpp ./scripts/llama-bench --help harbor shell vllm # Tell your shell exactly what you think about it harbor opint harbor aider harbor aichat harbor cmdh # Use fabric to LLM-ify your linux pipes cat ./file.md | harbor fabric --pattern extract_extraordinary_claims | grep "LK99" # Open services from the CLI harbor open webui harbor open llamacpp # Print yourself a QR to quickly open the # service on your phone harbor qr # Feeling adventurous? Expose your Harbor # to the internet harbor tunnel # Config management harbor config list harbor config set webui.host.port 8080 # Create and manage config profiles harbor profile save l370b harbor profile use default # Import profile from a URL harbor profile use https://example.com/path/to/harbor-profile.env # Lookup recently used harbor commands harbor history # Eject from Harbor into a standalone Docker Compose setup # Will export related services and variables into a standalone file. harbor eject searxng llamacpp > docker-compose.harbor.yml # Run a built-in LLM benchmark with # your own tasks harbor bench run # Gimmick/Fun Area # Argument scrambling, below commands are all the same as above # Harbor doesn't care if it's "vllm model" or "model vllm", it'll # figure it out. harbor model vllm harbor vllm model harbor config get webui.name harbor get config webui_name harbor tabbyapi shell harbor shell tabbyapi # 50% gimmick, 50% useful # Ask harbor about itself harbor how to ping ollama container from the webui? ``` ## Harbor App Demo https://github.com/user-attachments/assets/a5cd2ef1-3208-400a-8866-7abd85808503 In the demo, Harbor App is used to launch a default stack with [Ollama](./2.2.1-Backend:-Ollama) and [Open WebUI](./2.1.1-Frontend:-Open-WebUI) services. Later, [SearXNG](./2.3.1-Satellite:-SearXNG) is also started, and WebUI can connect to it for the Web RAG right out of the box. After that, [Harbor Boost](./5.2.-Harbor-Boost) is also started and connected to the WebUI automatically to induce more creative outputs. As a final step, Harbor config is adjusted in the App for the [`klmbr`](./5.2.-Harbor-Boost#klmbr---boost-llm-creativity) module in the [Harbor Boost](./5.2.-Harbor-Boost), which makes the output unparsable for the LLM (yet still undetstandable for humans). ## Why? - If you're comfortable with Docker and Linux administration - you likely don't need Harbor to manage your local LLM environment. However, while growing it - you're also likely to eventually arrive to a similar solution. I know this for a fact, since that's exactly how Harbor came to be. - Harbor is not designed as a deployment solution, but rather as a helper for the local LLM development environment. It's a good starting point for experimenting with LLMs and related services. - Workflow/setup centralisation - you can be sure where to find a specific config or service, logs, data and configuration files. - Convenience factor - single CLI with a lot of services and features, accessible from anywhere on your host. ## Supporters ![@av's wife](https://ui-avatars.com/api/?size=32&name=KN&rounded=true&background=ffaaaa&color=ff4444) ![@burnth3heretic](https://ui-avatars.com/api/?size=32&name=BTH&rounded=true) ![@vood](https://ui-avatars.com/api/?size=32&name=VD&rounded=true) ![@anonymous](https://ui-avatars.com/api/?size=32&name=🥷&rounded=true&background=bada55) <a href="https://x.com/TheAhmadOsman"><img src="docs/supporters-ahmad-osman.png" width="32" height="32" alt="@TheAhmadOsman" /></a>

E-commerce LLM Tools & Chat UIs
3.1K Github Stars
facts
Open Source

facts

<div align="center"> <img src="assets/readme/hero.png" alt="facts" width="800" /> https://github.com/user-attachments/assets/80981efb-8bab-47ee-a567-3eb6071321ad Read your entire project spec in 30 seconds. Verify it in one command. [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Release](https://img.shields.io/github/v/release/av/facts)](https://github.com/av/facts/releases) </div> Your project has 48 facts, 31 of them implemented: code-backed, verified by command. 12 are specs your agent is working through. 5 are rough drafts you'll refine later. You know all of this because you ran `facts check`. ``` # auth - users authenticate via OAuth2 @implemented - sessions expire after 24 hours @implemented - failed logins rate-limited to 5 per minute @spec - label: bcrypt password hashing with cost factor 12 command: grep -q 'bcrypt.*12' src/auth.ts # data - all timestamps stored in UTC @implemented - soft deletes only, no rows dropped @spec - PII encrypted at rest @draft # api - REST with versioned endpoints @implemented - rate limiting on all public routes @spec - structured error responses with error codes @spec ``` That's a `.facts` file, where each line is one atomic claim about your project. Tags track where each fact is in its lifecycle: `@draft` (rough idea), `@spec` (precise, ready to build), `@implemented` (true, code-backed). Your agent manages the transitions. The format is a flat list of claims: short enough to read in full, structured enough to manage, and when a fact has a shell command, the machine verifies it so the agent doesn't have to. ## Install Give your agent the facts skill: ```sh npx skills add av/facts ``` Then ask it to **Init facts**. It detects your stack, creates a `.facts` file with initial project truths, and sets up the full workflow. <details> <summary>Manual install</summary> ```sh curl -fsSL https://av.codes/facts.sh | sh ``` ```sh npm install -g @avcodes/facts # or npm pipx install facts-cli # or pipx ``` It's a single Rust binary with two dependencies, running on Linux, macOS, and Windows. Then scaffold your project: ```sh cd your-project facts init # scaffold .facts + install skills facts init api # create api.facts instead facts check ``` </details> ## Agent skills Four skills ship with every install. Your agent uses them to manage the full lifecycle without you directing every step. | Skill | What it does | |-------|-------------| | **facts** | Core operations: read the spec, check it, add and edit facts | | **facts-discover** | Scan the codebase, classify every fact by lifecycle stage, add missing truths | | **facts-refine** | Pick up `@draft` facts, sharpen them into precise `@spec` facts with you | | **facts-implement** | Pick up `@spec` facts, build them in code, verify, tag `@implemented` | The workflow is a loop: you write rough ideas as `@draft`. The agent refines them into specs. Then it implements them, runs `facts check`, and tags what it built. You see the progress in the fact sheet, right there in the spec itself. ``` @draft → @spec → @implemented ``` Every fact moves through this pipeline. At any point you can run `facts check` and know exactly where your project stands: what's done, what's in progress, and what's still just an idea. --- ## How it works <img src="assets/readme/howto-1.png" alt="1. Describe" width="700" /> **Describe** what should be true by writing claims as plain strings, one fact per line. Use `#` headings to organize by domain, tag each fact with its lifecycle stage, and for facts the machine can verify, add a `command` that exits 0 when the claim holds. <img src="assets/readme/howto-2.png" alt="2. Verify" width="700" /> **Verify** your facts with `facts check`, which lints all files and runs every command-fact. Manual facts stay as `?` unless you opt in with `--agent`. Use `--agent claude` (or any preset: `codex`, `pi`, `droid`, `opencode`, `mi`), bare `--agent` to use `facts config set agent …`, or a custom template with `%p`. It exits 0 when everything passes, non-zero when anything fails. Plug it into CI or let your agent run it after every change. <img src="assets/readme/howto-3.png" alt="3. Implement" width="700" /> **Implement** against the spec: your agent reads the fact sheet to understand the project, picks up `@spec` facts, builds them, and runs `facts check` to verify its own work. When a fact passes, it tags `@implemented`, and the spec updates itself as the project evolves. --- ## The format A `.facts` file is valid Markdown *and* valid YAML per section. ``` # section - a plain string fact @tag - label: a fact with a check command command: test -f src/main.rs tags: [core, mvp] ``` | Key | Required | Purpose | |-----|----------|---------| | `label` | yes | The claim | | `command` | no | Shell command, exit 0 = true | | `tags` | no | Freeform tokens for filtering | | `id` | no | Override the auto-generated ID | **Tags** filter with boolean expressions: `--tags "core and not blocked"`. Three well-known tags (`@draft`, `@spec`, `@implemented`) drive the lifecycle, but any tag works. **Files:** `.facts` is the default. Additional sheets use semantic names (`cli.facts`, `api.facts`). All `*.facts` files in the project root are discovered automatically. The `--file` flag accepts subdirectory paths (e.g. `--file src/api`) — subdirectory files are only visible when explicitly targeted. **Sections** use Markdown headings. Nesting creates hierarchy addressable by path (`api/auth`). Created when you add to them, removed when empty. **IDs** are short hashes of the label, stable as long as the label doesn't change. --- ## Commands Common short aliases (all extra args are passed through to the real command): - `ll` = `list --light`  `ls` = `list` - `rm` = `remove` - `at <id> <tag>` = `edit <id> --add-tag <tag>`  `rt <id> <tag>` = `edit <id> --remove-tag <tag>` ``` facts # list all facts (default) facts ll # list in markdown-like skim format facts ll --tags "draft" # combine alias + filter facts check # command-facts only; manual facts stay ? facts check --agent # also verify manual facts (uses .config agent) facts check --agent claude # verify manual facts with Claude facts check --id abc --agent claude # verify one fact with the agent facts check --tags "mvp and not blocked" # filter by tag expression facts check --section api/auth # filter by section path facts check --search "auth and rate" # full-text search filter facts check --file api.facts # filter to one file facts check --has-command # check only facts with commands facts check --manual --agent claude # check only manual facts with agent facts check --depth 2 # limit section nesting depth facts check --timeout 30 # per-command and per-batch timeout facts check --strict # fail on unverified manual facts (CI) facts check -q # quiet: exit code only (for CI) facts check -v # verbose: show agent prompts/output facts config set agent claude # persistent agent for checks facts config set batch-size 5 # facts per agent batch facts config show # view all config facts config get agent # read a config value facts config rm agent # remove a config key facts add "claim" --section api # add a fact facts at <id> spec # quick tag add (or use the full edit form) facts rt <id> draft # quick tag remove facts edit <id> --remove-command # convert to manual fact (remove command) facts remove <id> # remove a fact facts get <id> # look up a single fact facts move <id> --section new/path # relocate a fact facts list --section api/auth # filter by section facts lint # validate structure facts fmt # normalize all files facts init # scaffold .facts + install skills facts init api # create api.facts instead facts add "claim" --file src/api # add to a subdirectory file facts uninit # remove facts from project ``` --- ## Wiki Extended documentation and the full article index live in the [facts GitHub wiki](https://github.com/av/facts/wiki): - [Fact-Driven Development](https://github.com/av/facts/wiki/Fact-Driven-Development) — the methodology in depth with examples - [.facts File Format](https://github.com/av/facts/wiki/Facts-File-Format) — complete syntax, sections, tags, and IDs reference - [Facts CLI Reference](https://github.com/av/facts/wiki/Facts-CLI-Reference) — all subcommands, aliases (ll, at, rt), filters, and TUI - [Facts Lifecycle](https://github.com/av/facts/wiki/Facts-Lifecycle) — @draft → @spec → @implemented workflow with agent skills - [Facts with AI Agents](https://github.com/av/facts/wiki/Facts-with-AI-Agents) — integration with Claude, Cursor, and other agents - [Facts Check](https://github.com/av/facts/wiki/Facts-Check) — verification, agent checks, CI, filters, and output flags The [Home page](https://github.com/av/facts/wiki/Home) and sidebar index every guide. --- ## Dogfooding This repo uses a `.facts` file to describe itself: 224 facts, 154 verified by command, none failing. ``` $ facts check ... 154 passed, 0 failed, 70 manual ``` Clone the repo, install facts, and run `facts check` to see it work on itself. --- ## License MIT

AI Tools AI Agents Testing & QA
182 Github Stars