diff --git a/.scripts/seed.ts b/.scripts/seed.ts index 20e97d8..04d1074 100644 --- a/.scripts/seed.ts +++ b/.scripts/seed.ts @@ -2,7 +2,7 @@ import * as toml from 'jsr:@std/toml'; import * as path from 'jsr:@std/path'; import * as collections from "jsr:@std/collections/deep-merge"; -const VERSION = "0.2.11"; +const VERSION = "0.2.12"; type ValueSeed = { // Path relative to the project root diff --git a/.vscode/settings.json b/.vscode/settings.json index f18c312..74f3100 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,5 +7,5 @@ "file": ".copilot-instructions.md" } ], - "deno.enable": true + "deno.enable": false } \ No newline at end of file diff --git a/app/README.md b/app/README.md index 1661c04..3087f2e 100644 --- a/app/README.md +++ b/app/README.md @@ -17,4 +17,11 @@ bun install # Run the app in development mode bun tauri dev +``` + +## Build + +```bash +# For the currnet targets +bun tauri build ``` \ No newline at end of file diff --git a/app/package.json b/app/package.json index 1fadd4b..9187de0 100644 --- a/app/package.json +++ b/app/package.json @@ -1,7 +1,7 @@ { "name": "@avcodes/harbor-app", "private": true, - "version": "0.2.11", + "version": "0.2.12", "type": "module", "scripts": { "dev": "vite", diff --git a/app/src-tauri/Cargo.lock b/app/src-tauri/Cargo.lock index 9b6fc7d..7102e38 100644 --- a/app/src-tauri/Cargo.lock +++ b/app/src-tauri/Cargo.lock @@ -1474,7 +1474,7 @@ dependencies = [ [[package]] name = "harbor-app" -version = "0.2.7" +version = "0.2.11" dependencies = [ "fix-path-env", "serde", diff --git a/app/src-tauri/Cargo.toml b/app/src-tauri/Cargo.toml index 247d32f..2e6092e 100644 --- a/app/src-tauri/Cargo.toml +++ b/app/src-tauri/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "harbor-app" -version = "0.2.11" +version = "0.2.12" description = "A companion app for Harbor LLM toolkit" authors = ["av"] edition = "2021" diff --git a/app/src-tauri/tauri.conf.json b/app/src-tauri/tauri.conf.json index 9243dfd..a5598f5 100644 --- a/app/src-tauri/tauri.conf.json +++ b/app/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2.0.0-rc", "productName": "Harbor", - "version": "0.2.11", + "version": "0.2.12", "identifier": "com.harbor.app", "build": { "beforeDevCommand": "bun run dev", diff --git a/app/src/settings/ProfileSelector.tsx b/app/src/settings/ProfileSelector.tsx index 7312226..96dbe7e 100644 --- a/app/src/settings/ProfileSelector.tsx +++ b/app/src/settings/ProfileSelector.tsx @@ -3,10 +3,11 @@ import { IconCirclePlus } from "../Icons"; import { HarborConfig } from "../config/HarborConfig"; import { HarborConfigEditor } from "../config/HarborConfigEditor"; import { orderByPredefined } from "../utils"; -import { EXTRA, SORT_ORDER } from "../configMetadata"; +import { CURRENT_PROFILE, EXTRA, SORT_ORDER } from "../configMetadata"; import { useSelectedProfile } from "../useSelectedProfile"; import { useOverlays } from "../OverlayContext"; import { ConfigNameModal } from "../config/ConfigNameModal"; +import { useEffect } from "react"; export const ProfileSelector = ( { configs }: { configs: HarborConfig[] }, @@ -17,6 +18,15 @@ export const ProfileSelector = ( const configMap = new Map( configs.map((config) => [config.profile.name, config]), ); + + useEffect(() => { + if (!configMap.has(selected)) { + // We lost previously selected + // profile in one way or another + setSelected(CURRENT_PROFILE); + } + }, [configs]); + const currentConfig = configMap.get(selected); const sorted = orderByPredefined( configs.map((c) => c.profile.name), diff --git a/harbor.sh b/harbor.sh index 99526eb..a7aa47c 100755 --- a/harbor.sh +++ b/harbor.sh @@ -15,7 +15,9 @@ show_help() { echo "Usage: $0 [options]" echo echo "Compose Setup Commands:" - echo " up|u [handle] - Start the containers" + echo " up|u [handle(s)] - Start the service(s)" + echo " up --tail - Start and tail the logs" + echo " up --open - Start and open in the browser" echo " down|d - Stop and remove the containers" echo " restart|r [handle] - Down then up" echo " ps - List the running containers" @@ -23,9 +25,11 @@ show_help() { echo " exec [command] - Execute a command in a running service" echo " pull - Pull the latest images" echo " dive - Run the Dive CLI to inspect Docker images" + echo " run - Run a command defined as an alias" echo " run [command] - Run a one-off command in a service container" echo " shell - Load shell in the given service main container" echo " build - Build the given service" + echo " stats - Show resource usage statistics" echo " cmd - Print the docker compose command" echo echo "Setup Management Commands:" @@ -102,6 +106,12 @@ show_help() { echo " profile add|save - Add current config as a profile" echo " profile set|use|load - Use a profile" echo + echo " alias|aliases|a [ls|get|set|rm] - Manage Harbor aliases" + echo " alias ls|list - List all aliases" + echo " alias get - Get an alias" + echo " alias set - Set an alias" + echo " alias rm|remove - Remove an alias" + echo echo " history|h [ls|rm|add] - Harbor command history." echo " When run without arguments, launches interactive selector." echo " history clear - Clear the history" @@ -153,27 +163,27 @@ run_harbor_doctor() { return 1 fi - # Check if the .env file exists and is readable - if [ -f ".env" ] && [ -r ".env" ]; then - log_info "${ok} .env file exists and is readable" + # Check if the Harbor workspace directory exists + if [ -d "$harbor_home" ]; then + log_info "${ok} Harbor home: $harbor_home" else - log_error "${nok} .env file is missing or not readable. Please ensure it exists and has the correct permissions." + log_error "${nok} Harbor home does not exist or is not reachable." return 1 fi # Check if the default profile file exists and is readable if [ -f $default_profile ] && [ -r $default_profile ]; then - log_info "${ok} default profile exists and is readable" + log_info "${ok} Default profile exists and is readable" else - log_error "${nok} default profile is missing or not readable. Please ensure it exists and has the correct permissions." + log_error "${nok} Default profile is missing or not readable. Please ensure it exists and has the correct permissions." return 1 fi - # Check if the Harbor workspace directory exists - if [ -d "$harbor_home" ]; then - log_info "${ok} Harbor workspace directory exists" + # Check if the .env file exists and is readable + if [ -f ".env" ] && [ -r ".env" ]; then + log_info "${ok} Current profile (.env) exists and is readable" else - log_error "${nok} Harbor workspace directory $harbor_home does not exist." + log_error "${nok} Current profile (.env) is missing or not readable. Please ensure it exists and has the correct permissions." return 1 fi @@ -225,6 +235,10 @@ compose_with_options() { base_dir="${1#*=}" shift ;; + --no-defaults) + options=() + shift + ;; *) options+=("$1") shift @@ -320,19 +334,50 @@ resolve_compose_command() { fi } -harbor_up() { - $(compose_with_options "$@") up -d --wait +run_up() { + local should_tail=false + local should_open=false + local filtered_args=() + local up_args=() + + for arg in "$@"; do + case "$arg" in + --no-defaults) + up_args+=("$arg") + ;; + --open | -o) + should_open=true + ;; + --tail | -t) + should_tail=true + ;; + *) + filtered_args+=("$arg") # Add to filtered arguments + ;; + esac + done + + log_debug "Running 'up' for services: ${up_args[@]} ${filtered_args[@]}" + $(compose_with_options "${up_args[@]}" "${filtered_args[@]}") up -d --wait if [ "$default_autoopen" = "true" ]; then - open_service "$default_open" + run_open "$default_open" fi for service in "${default_tunnels[@]}"; do establish_tunnel "$service" done + + if $should_tail; then + run_logs "$filtered_args" + fi + + if $should_open; then + run_open "$filtered_args" + fi } -run_harbor_down() { +run_down() { local services=$(get_active_services) local matched_services=() @@ -353,6 +398,87 @@ run_harbor_down() { $(compose_with_options "*") down --remove-orphans "$@" $matched_services_str } +run_restart() { + run_down "$@" + run_up "$@" +} + +run_ps() { + $(compose_with_options "*") ps +} + +run_build() { + service=$1 + shift + + if [ -z "$service" ]; then + log_error "Usage: harbor build " + return 1 + fi + + local services=$(get_services) + + log_debug "Checking if service '$service' has subservices..." + matched_service=$(echo "$services" | grep "^$service-") + if [ -n "$matched_service" ]; then + log_debug "Matched service: $matched_service" + matched_services+=("$matched_service") + fi + + matched_services_str=$(printf " %s" "${matched_services[@]}") + log_debug "Building" "$service" "$@" $matched_services_str + $(compose_with_options "*") build "$service" "$@" $matched_services_str +} + +run_shell() { + service=$1 + shift + + if [ -z "$service" ]; then + log_error "Usage: harbor shell " + exit 1 + fi + + local shell="bash" + + if [ -n "$1" ]; then + shell="$1" + fi + + $(compose_with_options "*") run -it --entrypoint "$shell" "$service" +} + + +run_logs() { + $(compose_with_options "*") logs -n 20 -f "$@" +} + +run_pull() { + $(compose_with_options "$@") pull +} + +run_run() { + service=$1 + shift + + # Check if it is an alias first + local maybe_cmd=$(env_manager_dict aliases --silent get "$service") + + if [ -n "$maybe_cmd" ]; then + log_info "Running alias $service -> \"$maybe_cmd\"" + eval "$maybe_cmd" + return 0 + fi + + log_debug "'harbor run': no alias found for $service, running as service" + local services=$(get_active_services) + $(compose_with_options $services "$service") run --rm "$service" "$@" +} + +run_stats() { + $(compose_with_options "*") stats +} + run_hf_open() { local search_term="${*// /+}" local hf_url="https://huggingface.co/models?sort=trending&search=${search_term}" @@ -621,7 +747,7 @@ sys_open() { fi } -open_service() { +run_open() { local service_url if service_url=$(get_url "$1"); then @@ -653,7 +779,7 @@ eject() { $(compose_with_options "$@") config } -run_in_service() { +run_exec() { local service_name="" local before_args=() local after_args=() @@ -1241,11 +1367,16 @@ env_manager_dict() { shift local delimiter="," + local silent=false local get_command="" local set_command="" case "$1" in + --silent | -s) + silent=true + shift + ;; --help | -h) echo "Harbor dict: $field" echo @@ -1287,6 +1418,8 @@ env_manager_dict() { # Helper function to set the dictionary set_dict() { local new_dict=$1 + # Escape double quotes before setting + new_dict=$(echo "$new_dict" | sed 's/"/\\\\"/g') env_manager set "$field" "$new_dict" if [ -n "$set_command" ]; then eval "$set_command" @@ -1298,7 +1431,7 @@ env_manager_dict() { # Show all key/value pairs local dict=$(get_dict) if [ -z "$dict" ]; then - log_info "Config $field is empty" + $silent || log_info "Config $field is empty" else echo "$dict" | tr "$delimiter" "\n" | sed 's/=/: /' fi @@ -1308,7 +1441,7 @@ env_manager_dict() { ;; get) if [ -z "$key" ]; then - echo "Usage: env_dict_manager $field get " + $silent || echo "Usage: env_dict_manager $field get " return 1 fi local dict=$(get_dict) @@ -1324,7 +1457,7 @@ env_manager_dict() { if [ -n "$value" ]; then echo "$value" else - log_info "Key $key not found in $field" + $silent || log_info "Key $key not found in $field" fi if [ -n "$get_command" ]; then eval "$get_command" @@ -1352,7 +1485,7 @@ env_manager_dict() { print $0 }') set_dict "$new_dict" - log_info "Key '$key' set in $field" + $silent || log_info "Key '$key' set in $field" ;; rm) if [ -z "$key" ]; then @@ -1373,7 +1506,7 @@ env_manager_dict() { } }') set_dict "$new_dict" - log_info "Key '$key' removed from $field" + $silent || log_info "Key '$key' removed from $field" ;; -h | --help | help) echo "Usage: $field [--on-get ] [--on-set ] {ls|get|set|rm} [key] [value]" @@ -1824,7 +1957,7 @@ record_history_entry() { fi } -run_harbor_history() { +run_history() { case "$1" in ls | list) shift @@ -2769,14 +2902,14 @@ run_comfyui_workspace_command() { sync) shift log_info "Cleaning up ComfyUI environment..." - run_in_service comfyui rm -rf /workspace/environments/python/comfyui + run_exec comfyui rm -rf /workspace/environments/python/comfyui log_info "Syncing installed custom nodes to persistent storage..." - run_in_service comfyui venv-sync comfyui + run_exec comfyui venv-sync comfyui ;; clear) shift log_info "Cleaning up ComfyUI workspace..." - run_gum confirm "This operation will delete all stored ComfyUI configuration. Continue?" && run_in_service comfyui rm -rf /workspace/* || echo "Cleanup aborted." + run_gum confirm "This operation will delete all stored ComfyUI configuration. Continue?" && run_exec comfyui rm -rf /workspace/* || echo "Cleanup aborted." log_info "Restart Harbor to re-init Comfy UI" ;; *) @@ -3393,7 +3526,7 @@ run_repopack_command() { # ======================================================================== # Globals -version="0.2.11" +version="0.2.12" harbor_repo_url="https://github.com/av/harbor.git" harbor_release_url="https://api.github.com/repos/av/harbor/releases/latest" delimiter="|" @@ -3428,59 +3561,47 @@ main_entrypoint() { case "$1" in up | u) shift - harbor_up "$@" + run_up "$@" ;; down | d) shift - run_harbor_down "$@" + run_down "$@" ;; restart | r) shift - $(compose_with_options "*") down --remove-orphans "$@" - $(compose_with_options "$@") up -d + run_restart "$@" ;; ps) shift - $(compose_with_options "*") ps + run_ps "$@" ;; build) shift - service=$1 - shift - $(compose_with_options "*") build "$service" "$@" + run_build "$@" ;; shell) shift - service=$1 - shift - - if [ -z "$service" ]; then - echo "Usage: harbor shell " - exit 1 - fi - - $(compose_with_options "*") run -it --entrypoint bash "$service" + run_shell "$@" ;; logs | l) shift - # Only pass "*" to the command if no options are provided - $(compose_with_options "*") logs -n 20 -f "$@" + run_logs "$@" ;; pull) shift - $(compose_with_options "$@") pull + run_pull "$@" ;; exec) shift - run_in_service "$@" + run_exec "$@" ;; run) shift - service=$1 + run_run "$@" + ;; + stats) shift - - local services=$(get_active_services) - $(compose_with_options $services "$service") run --rm "$service" "$@" + run_stats "$@" ;; cmd) shift @@ -3497,6 +3618,10 @@ main_entrypoint() { shift env_manager_arr services.default "$@" ;; + alias | aliases | a) + shift + env_manager_dict aliases "$@" + ;; link | ln) shift link_cli "$@" @@ -3507,7 +3632,7 @@ main_entrypoint() { ;; open | o) shift - open_service "$@" + run_open "$@" ;; url) shift @@ -3735,7 +3860,7 @@ main_entrypoint() { ;; history | h) shift - run_harbor_history "$@" + run_history "$@" ;; size) shift diff --git a/http-catalog/tabbyapi.http b/http-catalog/tabbyapi.http index 80d0fcb..52a7443 100644 --- a/http-catalog/tabbyapi.http +++ b/http-catalog/tabbyapi.http @@ -41,7 +41,7 @@ curl {{host}}/v1/chat/completions -H "Content-Type: application/json" -H "Author ### curl {{host}}/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer {{apiKey}}" -d '{ - "model": "gguf", + "model": "hf", "messages": [ { "role": "user", @@ -49,4 +49,26 @@ curl {{host}}/v1/chat/completions -H "Content-Type: application/json" -H "Author } ], "max_tokens": 60 -}' \ No newline at end of file +}' + +### Models + +GET {{host}}/v1/models +Authorization: Bearer {{apiKey}} + +### Chat Completion + +POST {{host}}/v1/chat/completions +Content-Type: application/json +Authorization: Bearer {{apiKey}} + +{ + "model": "hf", + "messages": [ + { + "role": "user", + "content": "How to eat cake?" + } + ], + "max_tokens": 60 +} \ No newline at end of file diff --git a/package.json b/package.json index 965fc33..c64cbfb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@avcodes/harbor", - "version": "0.2.11", + "version": "0.2.12", "description": "Effortlessly run LLM backends, APIs, frontends, and services with one command.", "private": false, "author": "av (https://av.codes)", diff --git a/profiles/default.env b/profiles/default.env index 8e2818e..ebe4fd1 100644 --- a/profiles/default.env +++ b/profiles/default.env @@ -60,6 +60,8 @@ HARBOR_CLI_PATH="~/.local/bin" HARBOR_LOG_LEVEL="INFO" HARBOR_HISTORY_SIZE=10 HARBOR_HISTORY_FILE="./.history" +# Aliases for "harbor run", manage with "harbor alias" +HARBOR_ALIASES="" # Written by Harbor CLI HARBOR_USER_ID="" diff --git a/pyproject.toml b/pyproject.toml index 380c10f..a6f2e59 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [tool.poetry] name = "llm-harbor" -version = "0.2.11" +version = "0.2.12" description = "Effortlessly run LLM backends, APIs, frontends, and services with one command." repository = "https://github.com/av/harbor" documentation = "https://github.com/av/harbor/wiki" @@ -9,7 +9,7 @@ authors = ["av "] license = "Apache-2.0" readme = "README.md" classifiers = ["Topic :: Utilities","Topic :: Scientific/Engineering :: Artificial Intelligence","Environment :: Console","License :: OSI Approved :: Apache Software License"] -include = [".aider.chat.history.md",".editorconfig",".github/workflows/app-release.yml",".github/workflows/bench-docker.yml",".github/workflows/boost-docker.yml",".gitignore",".scripts/seed.ts",".style.yapf",".vscode/.copilot-instructions.md",".vscode/settings.json","LICENSE","README.md","RELEASE.md","aichat/Dockerfile","aichat/configs/aichat.airllm.yml","aichat/configs/aichat.aphrodite.yml","aichat/configs/aichat.config.yml","aichat/configs/aichat.dify.yml","aichat/configs/aichat.ktransformers.yml","aichat/configs/aichat.litellm.yml","aichat/configs/aichat.llamacpp.yml","aichat/configs/aichat.mistralrs.yml","aichat/configs/aichat.ollama.yml","aichat/configs/aichat.sglang.yml","aichat/configs/aichat.tabbyapi.yml","aichat/configs/aichat.vllm.yml","aichat/start_aichat.sh","aider/configs/aider.airllm.yml","aider/configs/aider.aphrodite.yml","aider/configs/aider.config.yml","aider/configs/aider.dify.yml","aider/configs/aider.ktransformers.yml","aider/configs/aider.litellm.yml","aider/configs/aider.llamacpp.yml","aider/configs/aider.mistralrs.yml","aider/configs/aider.ollama.yml","aider/configs/aider.sglang.yml","aider/configs/aider.tabbyapi.yml","aider/configs/aider.vllm.yml","aider/override.env","aider/start_aider.sh","airllm/Dockerfile","airllm/server.py","anythingllm/override.env","aphrodite/override.env","app/.editorconfig","app/.gitignore","app/README.md","app/app-icon.png","app/bun.lockb","app/index.html","app/package.json","app/postcss.config.js","app/public/tauri.svg","app/public/vite.svg","app/src-tauri/.gitignore","app/src-tauri/Cargo.lock","app/src-tauri/Cargo.toml","app/src-tauri/build.rs","app/src-tauri/capabilities/default.json","app/src-tauri/capabilities/desktop.json","app/src-tauri/icons/128x128.png","app/src-tauri/icons/128x128@2x.png","app/src-tauri/icons/32x32.png","app/src-tauri/icons/Square107x107Logo.png","app/src-tauri/icons/Square142x142Logo.png","app/src-tauri/icons/Square150x150Logo.png","app/src-tauri/icons/Square284x284Logo.png","app/src-tauri/icons/Square30x30Logo.png","app/src-tauri/icons/Square310x310Logo.png","app/src-tauri/icons/Square44x44Logo.png","app/src-tauri/icons/Square71x71Logo.png","app/src-tauri/icons/Square89x89Logo.png","app/src-tauri/icons/StoreLogo.png","app/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png","app/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png","app/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png","app/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png","app/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png","app/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png","app/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png","app/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png","app/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png","app/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png","app/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png","app/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png","app/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png","app/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png","app/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png","app/src-tauri/icons/icon.icns","app/src-tauri/icons/icon.ico","app/src-tauri/icons/icon.png","app/src-tauri/icons/ios/AppIcon-20x20@1x.png","app/src-tauri/icons/ios/AppIcon-20x20@2x-1.png","app/src-tauri/icons/ios/AppIcon-20x20@2x.png","app/src-tauri/icons/ios/AppIcon-20x20@3x.png","app/src-tauri/icons/ios/AppIcon-29x29@1x.png","app/src-tauri/icons/ios/AppIcon-29x29@2x-1.png","app/src-tauri/icons/ios/AppIcon-29x29@2x.png","app/src-tauri/icons/ios/AppIcon-29x29@3x.png","app/src-tauri/icons/ios/AppIcon-40x40@1x.png","app/src-tauri/icons/ios/AppIcon-40x40@2x-1.png","app/src-tauri/icons/ios/AppIcon-40x40@2x.png","app/src-tauri/icons/ios/AppIcon-40x40@3x.png","app/src-tauri/icons/ios/AppIcon-512@2x.png","app/src-tauri/icons/ios/AppIcon-60x60@2x.png","app/src-tauri/icons/ios/AppIcon-60x60@3x.png","app/src-tauri/icons/ios/AppIcon-76x76@1x.png","app/src-tauri/icons/ios/AppIcon-76x76@2x.png","app/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png","app/src-tauri/src/lib.rs","app/src-tauri/src/main.rs","app/src-tauri/src/tray.rs","app/src-tauri/tauri.conf.json","app/src/App.tsx","app/src/AppContent.tsx","app/src/AppRoutes.tsx","app/src/AppSidebar.tsx","app/src/Button.tsx","app/src/ConfirmModal.tsx","app/src/DataClass.tsx","app/src/HarborLogo.tsx","app/src/IconButton.tsx","app/src/Icons.tsx","app/src/Loading.tsx","app/src/LostSquirrel.tsx","app/src/Modal.tsx","app/src/OverlayContext.tsx","app/src/ScrollToTop.tsx","app/src/SearchInput.tsx","app/src/Section.tsx","app/src/assets/font/Inter-Black.woff2","app/src/assets/font/Inter-BlackItalic.woff2","app/src/assets/font/Inter-Bold.woff2","app/src/assets/font/Inter-BoldItalic.woff2","app/src/assets/font/Inter-ExtraBold.woff2","app/src/assets/font/Inter-ExtraBoldItalic.woff2","app/src/assets/font/Inter-ExtraLight.woff2","app/src/assets/font/Inter-ExtraLightItalic.woff2","app/src/assets/font/Inter-Italic.woff2","app/src/assets/font/Inter-Light.woff2","app/src/assets/font/Inter-LightItalic.woff2","app/src/assets/font/Inter-Medium.woff2","app/src/assets/font/Inter-MediumItalic.woff2","app/src/assets/font/Inter-Regular.woff2","app/src/assets/font/Inter-SemiBold.woff2","app/src/assets/font/Inter-SemiBoldItalic.woff2","app/src/assets/font/Inter-Thin.woff2","app/src/assets/font/Inter-ThinItalic.woff2","app/src/assets/font/InterDisplay-Black.woff2","app/src/assets/font/InterDisplay-BlackItalic.woff2","app/src/assets/font/InterDisplay-Bold.woff2","app/src/assets/font/InterDisplay-BoldItalic.woff2","app/src/assets/font/InterDisplay-ExtraBold.woff2","app/src/assets/font/InterDisplay-ExtraBoldItalic.woff2","app/src/assets/font/InterDisplay-ExtraLight.woff2","app/src/assets/font/InterDisplay-ExtraLightItalic.woff2","app/src/assets/font/InterDisplay-Italic.woff2","app/src/assets/font/InterDisplay-Light.woff2","app/src/assets/font/InterDisplay-LightItalic.woff2","app/src/assets/font/InterDisplay-Medium.woff2","app/src/assets/font/InterDisplay-MediumItalic.woff2","app/src/assets/font/InterDisplay-Regular.woff2","app/src/assets/font/InterDisplay-SemiBold.woff2","app/src/assets/font/InterDisplay-SemiBoldItalic.woff2","app/src/assets/font/InterDisplay-Thin.woff2","app/src/assets/font/InterDisplay-ThinItalic.woff2","app/src/assets/font/InterVariable-Italic.woff2","app/src/assets/font/InterVariable.woff2","app/src/cli/CLI.tsx","app/src/config/Config.tsx","app/src/config/ConfigNameModal.tsx","app/src/config/HarborConfig.ts","app/src/config/HarborConfigEditor.tsx","app/src/config/HarborConfigEntryEditor.tsx","app/src/config/HarborConfigSectionEditor.tsx","app/src/config/useHarborConfig.ts","app/src/configMetadata.tsx","app/src/font.css","app/src/home/Doctor.tsx","app/src/home/Home.tsx","app/src/home/ServiceCard.tsx","app/src/home/ServiceList.tsx","app/src/home/Version.tsx","app/src/home/useServiceList.tsx","app/src/localStorage.ts","app/src/main.css","app/src/main.tsx","app/src/serviceMetadata.tsx","app/src/settings/ProfileSelector.tsx","app/src/settings/Settings.tsx","app/src/squirrel.css","app/src/theme.tsx","app/src/useArrayState.ts","app/src/useAutostart.tsx","app/src/useCalled.tsx","app/src/useDebounceCallback.tsx","app/src/useGlobalKeydown.tsx","app/src/useHarbor.tsx","app/src/useInvoke.tsx","app/src/useSearch.tsx","app/src/useSelectedProfile.tsx","app/src/useSharedState.tsx","app/src/useStoredState.tsx","app/src/useUnmount.ts","app/src/utils.tsx","app/src/vite-env.d.ts","app/tailwind.config.js","app/tsconfig.json","app/tsconfig.node.json","app/vite.config.ts","autogpt/backends/autogpt.ollama.yml","autogpt/override.env","bench/Dockerfile","bench/defaultTasks.yml","bench/override.env","bench/src/bench.ts","bench/src/config.ts","bench/src/deps.ts","bench/src/judge.ts","bench/src/llm.ts","bench/src/log.ts","bench/src/report.ts","bench/src/run.ts","bench/src/runner.ts","bench/src/task.ts","bench/src/tasks.ts","bench/src/tsconfig.json","bench/src/utils.ts","bionicgpt/start_envoy.sh","boost/Dockerfile","boost/override.env","boost/src/chat.py","boost/src/chat_node.py","boost/src/config.py","boost/src/custom_modules/.gitkeep","boost/src/custom_modules/3t.py","boost/src/custom_modules/ambi.py","boost/src/custom_modules/cea.py","boost/src/custom_modules/clarity.py","boost/src/custom_modules/discussurl.py","boost/src/custom_modules/example.py","boost/src/custom_modules/fml.py","boost/src/custom_modules/l33t.py","boost/src/custom_modules/meow.py","boost/src/custom_modules/pad.py","boost/src/custom_modules/unstable.py","boost/src/custom_modules/webui_artifact.py","boost/src/custom_modules/wswp.py","boost/src/format.py","boost/src/llm.py","boost/src/log.py","boost/src/main.py","boost/src/mapper.py","boost/src/mods.py","boost/src/modules/eli5.py","boost/src/modules/g1.py","boost/src/modules/klmbr.py","boost/src/modules/mcts.py","boost/src/modules/rcn.py","boost/src/modules/supersummer.py","boost/src/requirements.txt","boost/src/selection.py","chatui/configs/chatui.airllm.yml","chatui/configs/chatui.aphrodite.yml","chatui/configs/chatui.config.yml","chatui/configs/chatui.dify.yml","chatui/configs/chatui.litellm.yml","chatui/configs/chatui.llamacpp.yml","chatui/configs/chatui.mistralrs.yml","chatui/configs/chatui.ollama.yml","chatui/configs/chatui.searxng.yml","chatui/configs/chatui.tabbyapi.yml","chatui/configs/chatui.vllm.yml","chatui/envify.js","chatui/start_chatui.sh","cmdh/Dockerfile","cmdh/harbor.prompt","cmdh/ollama.ts","cmdh/override.env","cmdh/system.prompt","comfyui/.gitkeep","comfyui/override.env","comfyui/provisioning.sh","compose.aichat.yml","compose.aider.yml","compose.airllm.yml","compose.anythingllm.yml","compose.aphrodite.yml","compose.autogpt.yml","compose.bench.yml","compose.bionicgpt.yml","compose.boost.yml","compose.cfd.yml","compose.chatui.yml","compose.cmdh.yml","compose.comfyui.yml","compose.dify.yml","compose.fabric.yml","compose.gum.yml","compose.hf.yml","compose.hfdownloader.yml","compose.hollama.yml","compose.jupyter.yml","compose.ktransformers.yml","compose.langfuse.yml","compose.librechat.yml","compose.litellm.yml","compose.litlytics.yml","compose.llamacpp.yml","compose.lmdeploy.yml","compose.lmeval.yml","compose.lobechat.yml","compose.mistralrs.yml","compose.nexa.yml","compose.ol1.yml","compose.ollama.yml","compose.omnichain.yml","compose.openhands.yml","compose.opint.yml","compose.parler.yml","compose.parllama.yml","compose.perplexica.yml","compose.plandex.yml","compose.qrgen.yml","compose.repopack.yml","compose.searxng.yml","compose.sglang.yml","compose.stt.yml","compose.tabbyapi.yml","compose.textgrad.yml","compose.tgi.yml","compose.tts.yml","compose.txtairag.yml","compose.vllm.yml","compose.webui.yml","compose.x.aichat.ktransformers.yml","compose.x.aichat.ollama.yml","compose.x.aider.airllm.yml","compose.x.aider.aphrodite.yml","compose.x.aider.dify.yml","compose.x.aider.ktransformers.yml","compose.x.aider.litellm.yml","compose.x.aider.llamacpp.yml","compose.x.aider.mistralrs.yml","compose.x.aider.nvidia.yml","compose.x.aider.ollama.yml","compose.x.aider.sglang.yml","compose.x.aider.tabbyapi.yml","compose.x.aider.vllm.yml","compose.x.anythingllm.llamacpp.yml","compose.x.anythingllm.ollama.yml","compose.x.anythingllm.searxng.yml","compose.x.aphrodite.nvidia.yml","compose.x.boost.airllm.yml","compose.x.boost.aphrodite.yml","compose.x.boost.dify.yml","compose.x.boost.ktransformers.yml","compose.x.boost.litellm.yml","compose.x.boost.llamacpp.yml","compose.x.boost.mistralrs.yml","compose.x.boost.ollama.yml","compose.x.boost.omnichain.yml","compose.x.boost.sglang.yml","compose.x.boost.tabbyapi.yml","compose.x.boost.vllm.yml","compose.x.chatui.airllm.yml","compose.x.chatui.aphrodite.yml","compose.x.chatui.dify.yml","compose.x.chatui.litellm.yml","compose.x.chatui.llamacpp.yml","compose.x.chatui.mistralrs.yml","compose.x.chatui.ollama.yml","compose.x.chatui.searxng.yml","compose.x.chatui.tabbyapi.yml","compose.x.chatui.vllm.yml","compose.x.cmdh.harbor.yml","compose.x.cmdh.llamacpp.yml","compose.x.cmdh.ollama.yml","compose.x.cmdh.tgi.yml","compose.x.comfyui.nvidia.yml","compose.x.fabric.ollama.yml","compose.x.jupyter.nvidia.yml","compose.x.ktransformers.nvidia.yml","compose.x.litellm.langfuse.yml","compose.x.litellm.tgi.yml","compose.x.litellm.vllm.yml","compose.x.llamacpp.nvidia.yml","compose.x.lmdeploy.nvidia.yml","compose.x.lmeval.nvidia.yml","compose.x.lobechat.ollama.yml","compose.x.mistralrs.nvidia.yml","compose.x.nexa.nvidia.yml","compose.x.ollama.nvidia.yml","compose.x.ollama.webui.yml","compose.x.openhands.ollama.yml","compose.x.opint.aphrodite.yml","compose.x.opint.litellm.yml","compose.x.opint.llamacpp.yml","compose.x.opint.mistralrs.yml","compose.x.opint.ollama.yml","compose.x.opint.tabbyapi.yml","compose.x.opint.vllm.yml","compose.x.parler.nvidia.yml","compose.x.parllama.ollama.yml","compose.x.perplexica.ollama.yml","compose.x.perplexica.searxng.yml","compose.x.plandex.litellm.yml","compose.x.plandex.llamacpp.yml","compose.x.plandex.ollama.yml","compose.x.sglang.nvidia.yml","compose.x.stt.nvidia.yml","compose.x.tabbyapi.nvidia.yml","compose.x.textgrad.nvidia.yml","compose.x.tgi.nvidia.yml","compose.x.tts.nvidia.yml","compose.x.txtairag.nvidia.yml","compose.x.txtairag.ollama.yml","compose.x.vllm.nvidia.yml","compose.x.webui.airllm.yml","compose.x.webui.aphrodite.yml","compose.x.webui.boost.yml","compose.x.webui.comfyui.yml","compose.x.webui.dify.yml","compose.x.webui.ktransformers.yml","compose.x.webui.litellm.yml","compose.x.webui.llamacpp.yml","compose.x.webui.mistralrs.yml","compose.x.webui.nexa.yml","compose.x.webui.ollama.yml","compose.x.webui.omnichain.yml","compose.x.webui.parler.yml","compose.x.webui.searxng.ollama.yml","compose.x.webui.searxng.yml","compose.x.webui.sglang.yml","compose.x.webui.stt.yml","compose.x.webui.tabbyapi.yml","compose.x.webui.tts.yml","compose.x.webui.vllm.yml","compose.yml","deno.lock","dify/certbot/README.md","dify/certbot/docker-entrypoint.sh","dify/certbot/update-cert.template.txt","dify/nginx/conf.d/default.conf.template","dify/nginx/docker-entrypoint.sh","dify/nginx/https.conf.template","dify/nginx/nginx.conf.template","dify/nginx/proxy.conf.template","dify/nginx/ssl/.gitkeep","dify/openai/Dockerfile","dify/openai/app.js","dify/openai/package.json","dify/override.env","dify/ssrf_proxy/docker-entrypoint.sh","dify/ssrf_proxy/squid.conf.template","docs/harbor-2.png","fabric/Dockerfile","fabric/override.env","gum/Dockerfile","harbor.sh","harbor/__init__.py","hf/Dockerfile","hfdownloader/Dockerfile","http-catalog/airllm.http","http-catalog/aphrodite.http","http-catalog/boost.http","http-catalog/dify.http","http-catalog/hf.http","http-catalog/ktransformers.http","http-catalog/langfuse.http","http-catalog/litellm.http","http-catalog/llamacpp.http","http-catalog/mistralrs.http","http-catalog/nexa.http","http-catalog/ollama.http","http-catalog/omnichain.http","http-catalog/parler.http","http-catalog/plandex.http","http-catalog/sglang.http","http-catalog/stt.http","http-catalog/tabbyapi.http","http-catalog/tgi.http","http-catalog/tts.http","http-catalog/vllm.http","http-catalog/webui.http","install.sh","jupyter/Dockerfile","jupyter/override.env","jupyter/workspace/000-sample.ipynb","ktransformers/Dockerfile","ktransformers/chat.py","ktransformers/override.env","langfuse/.gitkeep","librechat/.env","librechat/.gitkeep","librechat/librechat.yml","librechat/override.env","librechat/start_librechat.sh","litellm/litellm.config.yaml","litellm/litellm.langfuse.yaml","litellm/litellm.tgi.yaml","litellm/litellm.vllm.yaml","litellm/start_litellm.sh","litlytics/override.env","lmeval/Dockerfile","lmeval/override.env","lobechat/override.env","nexa/Dockerfile","nexa/nvidia.sh","nexa/override.env","nexa/proxy.Dockerfile","nexa/proxy_server.py","ol1/Dockerfile","ol1/README.md","ol1/app.py","ol1/override.env","ollama/.gitkeep","ollama/modelfiles/flowaicom-flow-judge.Modelfile","ollama/modelfiles/llama3.1_8b.Modelfile","ollama/modelfiles/llama3.1_q6k_48k.Modelfile","omnichain/Dockerfile","omnichain/custom_nodes/example/example.maker.js","omnichain/entrypoint.sh","omnichain/examples/HarborChat.json","omnichain/files/harbor.prompt","omnichain/openai.ts","omnichain/override.env","open-webui/configs/config.airllm.json","open-webui/configs/config.aphrodite.json","open-webui/configs/config.boost.json","open-webui/configs/config.comfyui.json","open-webui/configs/config.dify.json","open-webui/configs/config.json","open-webui/configs/config.ktransformers.json","open-webui/configs/config.litellm.json","open-webui/configs/config.llamacpp.json","open-webui/configs/config.mistralrs.json","open-webui/configs/config.nexa.json","open-webui/configs/config.ollama.json","open-webui/configs/config.omnichain.json","open-webui/configs/config.override.json","open-webui/configs/config.parler.json","open-webui/configs/config.searxng.json","open-webui/configs/config.sglang.json","open-webui/configs/config.stt.json","open-webui/configs/config.tabbyapi.json","open-webui/configs/config.tts.json","open-webui/configs/config.vllm.json","open-webui/configs/config.x.searxng.ollama.json","open-webui/extras/mcts.py","open-webui/start_webui.sh","openhands/override.env","openinterpreter/Dockerfile","package.json","parler/main.py","parllama/Dockerfile","perplexica/override.env","perplexica/source.config.toml","plandex/Dockerfile","poetry.lock","profiles/default.env","pyproject.toml","qrgen/Dockerfile","qrgen/gen.ts","repopack/Dockerfile","repopack/override.env","searxng/settings.yml","searxng/settings.yml.new","searxng/uwsgi.ini","shared/README.md","shared/json_config_merger.py","shared/yaml_config_merger.js","shared/yaml_config_merger.py","stt/override.env","tabbyapi/api_tokens.yml","tabbyapi/config.yml","tabbyapi/start_tabbyapi.sh","textgrad/Dockerfile","textgrad/workspace/000-sample.ipynb","tts/config/pre_process_map.yaml","tts/config/voice_to_speaker.yaml","vllm/Dockerfile","vllm/override.env"] +include = [".aider.chat.history.md",".editorconfig",".github/workflows/app-release.yml",".github/workflows/bench-docker.yml",".github/workflows/boost-docker.yml",".gitignore",".scripts/seed.ts",".style.yapf",".vscode/.copilot-instructions.md",".vscode/settings.json","LICENSE","README.md","RELEASE.md","aichat/Dockerfile","aichat/configs/aichat.airllm.yml","aichat/configs/aichat.aphrodite.yml","aichat/configs/aichat.config.yml","aichat/configs/aichat.dify.yml","aichat/configs/aichat.ktransformers.yml","aichat/configs/aichat.litellm.yml","aichat/configs/aichat.llamacpp.yml","aichat/configs/aichat.mistralrs.yml","aichat/configs/aichat.ollama.yml","aichat/configs/aichat.sglang.yml","aichat/configs/aichat.tabbyapi.yml","aichat/configs/aichat.vllm.yml","aichat/start_aichat.sh","aider/configs/aider.airllm.yml","aider/configs/aider.aphrodite.yml","aider/configs/aider.config.yml","aider/configs/aider.dify.yml","aider/configs/aider.ktransformers.yml","aider/configs/aider.litellm.yml","aider/configs/aider.llamacpp.yml","aider/configs/aider.mistralrs.yml","aider/configs/aider.ollama.yml","aider/configs/aider.sglang.yml","aider/configs/aider.tabbyapi.yml","aider/configs/aider.vllm.yml","aider/override.env","aider/start_aider.sh","airllm/Dockerfile","airllm/server.py","anythingllm/override.env","aphrodite/override.env","app/.editorconfig","app/.gitignore","app/README.md","app/app-icon.png","app/bun.lockb","app/index.html","app/package.json","app/postcss.config.js","app/public/tauri.svg","app/public/vite.svg","app/src-tauri/.gitignore","app/src-tauri/Cargo.lock","app/src-tauri/Cargo.toml","app/src-tauri/build.rs","app/src-tauri/capabilities/default.json","app/src-tauri/capabilities/desktop.json","app/src-tauri/icons/128x128.png","app/src-tauri/icons/128x128@2x.png","app/src-tauri/icons/32x32.png","app/src-tauri/icons/Square107x107Logo.png","app/src-tauri/icons/Square142x142Logo.png","app/src-tauri/icons/Square150x150Logo.png","app/src-tauri/icons/Square284x284Logo.png","app/src-tauri/icons/Square30x30Logo.png","app/src-tauri/icons/Square310x310Logo.png","app/src-tauri/icons/Square44x44Logo.png","app/src-tauri/icons/Square71x71Logo.png","app/src-tauri/icons/Square89x89Logo.png","app/src-tauri/icons/StoreLogo.png","app/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png","app/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png","app/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png","app/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png","app/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png","app/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png","app/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png","app/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png","app/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png","app/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png","app/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png","app/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png","app/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png","app/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png","app/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png","app/src-tauri/icons/icon.icns","app/src-tauri/icons/icon.ico","app/src-tauri/icons/icon.png","app/src-tauri/icons/ios/AppIcon-20x20@1x.png","app/src-tauri/icons/ios/AppIcon-20x20@2x-1.png","app/src-tauri/icons/ios/AppIcon-20x20@2x.png","app/src-tauri/icons/ios/AppIcon-20x20@3x.png","app/src-tauri/icons/ios/AppIcon-29x29@1x.png","app/src-tauri/icons/ios/AppIcon-29x29@2x-1.png","app/src-tauri/icons/ios/AppIcon-29x29@2x.png","app/src-tauri/icons/ios/AppIcon-29x29@3x.png","app/src-tauri/icons/ios/AppIcon-40x40@1x.png","app/src-tauri/icons/ios/AppIcon-40x40@2x-1.png","app/src-tauri/icons/ios/AppIcon-40x40@2x.png","app/src-tauri/icons/ios/AppIcon-40x40@3x.png","app/src-tauri/icons/ios/AppIcon-512@2x.png","app/src-tauri/icons/ios/AppIcon-60x60@2x.png","app/src-tauri/icons/ios/AppIcon-60x60@3x.png","app/src-tauri/icons/ios/AppIcon-76x76@1x.png","app/src-tauri/icons/ios/AppIcon-76x76@2x.png","app/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png","app/src-tauri/src/lib.rs","app/src-tauri/src/main.rs","app/src-tauri/src/tray.rs","app/src-tauri/tauri.conf.json","app/src/App.tsx","app/src/AppContent.tsx","app/src/AppRoutes.tsx","app/src/AppSidebar.tsx","app/src/Button.tsx","app/src/ConfirmModal.tsx","app/src/DataClass.tsx","app/src/HarborLogo.tsx","app/src/IconButton.tsx","app/src/Icons.tsx","app/src/Loading.tsx","app/src/LostSquirrel.tsx","app/src/Modal.tsx","app/src/OverlayContext.tsx","app/src/ScrollToTop.tsx","app/src/SearchInput.tsx","app/src/Section.tsx","app/src/assets/font/Inter-Black.woff2","app/src/assets/font/Inter-BlackItalic.woff2","app/src/assets/font/Inter-Bold.woff2","app/src/assets/font/Inter-BoldItalic.woff2","app/src/assets/font/Inter-ExtraBold.woff2","app/src/assets/font/Inter-ExtraBoldItalic.woff2","app/src/assets/font/Inter-ExtraLight.woff2","app/src/assets/font/Inter-ExtraLightItalic.woff2","app/src/assets/font/Inter-Italic.woff2","app/src/assets/font/Inter-Light.woff2","app/src/assets/font/Inter-LightItalic.woff2","app/src/assets/font/Inter-Medium.woff2","app/src/assets/font/Inter-MediumItalic.woff2","app/src/assets/font/Inter-Regular.woff2","app/src/assets/font/Inter-SemiBold.woff2","app/src/assets/font/Inter-SemiBoldItalic.woff2","app/src/assets/font/Inter-Thin.woff2","app/src/assets/font/Inter-ThinItalic.woff2","app/src/assets/font/InterDisplay-Black.woff2","app/src/assets/font/InterDisplay-BlackItalic.woff2","app/src/assets/font/InterDisplay-Bold.woff2","app/src/assets/font/InterDisplay-BoldItalic.woff2","app/src/assets/font/InterDisplay-ExtraBold.woff2","app/src/assets/font/InterDisplay-ExtraBoldItalic.woff2","app/src/assets/font/InterDisplay-ExtraLight.woff2","app/src/assets/font/InterDisplay-ExtraLightItalic.woff2","app/src/assets/font/InterDisplay-Italic.woff2","app/src/assets/font/InterDisplay-Light.woff2","app/src/assets/font/InterDisplay-LightItalic.woff2","app/src/assets/font/InterDisplay-Medium.woff2","app/src/assets/font/InterDisplay-MediumItalic.woff2","app/src/assets/font/InterDisplay-Regular.woff2","app/src/assets/font/InterDisplay-SemiBold.woff2","app/src/assets/font/InterDisplay-SemiBoldItalic.woff2","app/src/assets/font/InterDisplay-Thin.woff2","app/src/assets/font/InterDisplay-ThinItalic.woff2","app/src/assets/font/InterVariable-Italic.woff2","app/src/assets/font/InterVariable.woff2","app/src/cli/CLI.tsx","app/src/config/Config.tsx","app/src/config/ConfigNameModal.tsx","app/src/config/HarborConfig.ts","app/src/config/HarborConfigEditor.tsx","app/src/config/HarborConfigEntryEditor.tsx","app/src/config/HarborConfigSectionEditor.tsx","app/src/config/useHarborConfig.ts","app/src/configMetadata.tsx","app/src/font.css","app/src/home/Doctor.tsx","app/src/home/Home.tsx","app/src/home/ServiceCard.tsx","app/src/home/ServiceList.tsx","app/src/home/Version.tsx","app/src/home/useServiceList.tsx","app/src/localStorage.ts","app/src/main.css","app/src/main.tsx","app/src/serviceMetadata.tsx","app/src/settings/ProfileSelector.tsx","app/src/settings/Settings.tsx","app/src/squirrel.css","app/src/theme.tsx","app/src/useArrayState.ts","app/src/useAutostart.tsx","app/src/useCalled.tsx","app/src/useDebounceCallback.tsx","app/src/useGlobalKeydown.tsx","app/src/useHarbor.tsx","app/src/useInvoke.tsx","app/src/useSearch.tsx","app/src/useSelectedProfile.tsx","app/src/useSharedState.tsx","app/src/useStoredState.tsx","app/src/useUnmount.ts","app/src/utils.tsx","app/src/vite-env.d.ts","app/tailwind.config.js","app/tsconfig.json","app/tsconfig.node.json","app/vite.config.ts","autogpt/backends/autogpt.ollama.yml","autogpt/override.env","bench/Dockerfile","bench/defaultTasks.yml","bench/override.env","bench/src/bench.ts","bench/src/config.ts","bench/src/deps.ts","bench/src/judge.ts","bench/src/llm.ts","bench/src/log.ts","bench/src/report.ts","bench/src/run.ts","bench/src/runner.ts","bench/src/task.ts","bench/src/tasks.ts","bench/src/tsconfig.json","bench/src/utils.ts","bionicgpt/start_envoy.sh","boost/Dockerfile","boost/override.env","boost/src/chat.py","boost/src/chat_node.py","boost/src/config.py","boost/src/custom_modules/.gitkeep","boost/src/custom_modules/3t.py","boost/src/custom_modules/ambi.py","boost/src/custom_modules/cea.py","boost/src/custom_modules/clarity.py","boost/src/custom_modules/discussurl.py","boost/src/custom_modules/example.py","boost/src/custom_modules/fml.py","boost/src/custom_modules/l33t.py","boost/src/custom_modules/meow.py","boost/src/custom_modules/pad.py","boost/src/custom_modules/unstable.py","boost/src/custom_modules/webui_artifact.py","boost/src/custom_modules/wswp.py","boost/src/format.py","boost/src/llm.py","boost/src/log.py","boost/src/main.py","boost/src/mapper.py","boost/src/mods.py","boost/src/modules/eli5.py","boost/src/modules/g1.py","boost/src/modules/klmbr.py","boost/src/modules/mcts.py","boost/src/modules/rcn.py","boost/src/modules/supersummer.py","boost/src/requirements.txt","boost/src/selection.py","chatui/configs/chatui.airllm.yml","chatui/configs/chatui.aphrodite.yml","chatui/configs/chatui.config.yml","chatui/configs/chatui.dify.yml","chatui/configs/chatui.litellm.yml","chatui/configs/chatui.llamacpp.yml","chatui/configs/chatui.mistralrs.yml","chatui/configs/chatui.ollama.yml","chatui/configs/chatui.searxng.yml","chatui/configs/chatui.tabbyapi.yml","chatui/configs/chatui.vllm.yml","chatui/envify.js","chatui/start_chatui.sh","cmdh/Dockerfile","cmdh/harbor.prompt","cmdh/ollama.ts","cmdh/override.env","cmdh/system.prompt","comfyui/.gitkeep","comfyui/override.env","comfyui/provisioning.sh","compose.aichat.yml","compose.aider.yml","compose.airllm.yml","compose.anythingllm.yml","compose.aphrodite.yml","compose.autogpt.yml","compose.bench.yml","compose.bionicgpt.yml","compose.boost.yml","compose.cfd.yml","compose.chatui.yml","compose.cmdh.yml","compose.comfyui.yml","compose.dify.yml","compose.fabric.yml","compose.gum.yml","compose.hf.yml","compose.hfdownloader.yml","compose.hollama.yml","compose.jupyter.yml","compose.ktransformers.yml","compose.langfuse.yml","compose.librechat.yml","compose.litellm.yml","compose.litlytics.yml","compose.llamacpp.yml","compose.lmdeploy.yml","compose.lmeval.yml","compose.lobechat.yml","compose.mistralrs.yml","compose.nexa.yml","compose.ol1.yml","compose.ollama.yml","compose.omnichain.yml","compose.openhands.yml","compose.opint.yml","compose.parler.yml","compose.parllama.yml","compose.perplexica.yml","compose.plandex.yml","compose.qrgen.yml","compose.repopack.yml","compose.searxng.yml","compose.sglang.yml","compose.stt.yml","compose.tabbyapi.yml","compose.textgrad.yml","compose.tgi.yml","compose.tts.yml","compose.txtairag.yml","compose.vllm.yml","compose.webui.yml","compose.x.aichat.ktransformers.yml","compose.x.aichat.ollama.yml","compose.x.aider.airllm.yml","compose.x.aider.aphrodite.yml","compose.x.aider.dify.yml","compose.x.aider.ktransformers.yml","compose.x.aider.litellm.yml","compose.x.aider.llamacpp.yml","compose.x.aider.mistralrs.yml","compose.x.aider.nvidia.yml","compose.x.aider.ollama.yml","compose.x.aider.sglang.yml","compose.x.aider.tabbyapi.yml","compose.x.aider.vllm.yml","compose.x.anythingllm.llamacpp.yml","compose.x.anythingllm.ollama.yml","compose.x.anythingllm.searxng.yml","compose.x.aphrodite.nvidia.yml","compose.x.boost.airllm.yml","compose.x.boost.aphrodite.yml","compose.x.boost.dify.yml","compose.x.boost.ktransformers.yml","compose.x.boost.litellm.yml","compose.x.boost.llamacpp.yml","compose.x.boost.mistralrs.yml","compose.x.boost.ollama.yml","compose.x.boost.omnichain.yml","compose.x.boost.sglang.yml","compose.x.boost.tabbyapi.yml","compose.x.boost.vllm.yml","compose.x.chatui.airllm.yml","compose.x.chatui.aphrodite.yml","compose.x.chatui.dify.yml","compose.x.chatui.litellm.yml","compose.x.chatui.llamacpp.yml","compose.x.chatui.mistralrs.yml","compose.x.chatui.ollama.yml","compose.x.chatui.searxng.yml","compose.x.chatui.tabbyapi.yml","compose.x.chatui.vllm.yml","compose.x.cmdh.harbor.yml","compose.x.cmdh.llamacpp.yml","compose.x.cmdh.ollama.yml","compose.x.cmdh.tgi.yml","compose.x.comfyui.nvidia.yml","compose.x.fabric.ollama.yml","compose.x.jupyter.nvidia.yml","compose.x.ktransformers.nvidia.yml","compose.x.litellm.langfuse.yml","compose.x.litellm.tgi.yml","compose.x.litellm.vllm.yml","compose.x.llamacpp.nvidia.yml","compose.x.lmdeploy.nvidia.yml","compose.x.lmeval.nvidia.yml","compose.x.lobechat.ollama.yml","compose.x.mistralrs.nvidia.yml","compose.x.nexa.nvidia.yml","compose.x.ollama.nvidia.yml","compose.x.ollama.webui.yml","compose.x.openhands.ollama.yml","compose.x.opint.aphrodite.yml","compose.x.opint.litellm.yml","compose.x.opint.llamacpp.yml","compose.x.opint.mistralrs.yml","compose.x.opint.ollama.yml","compose.x.opint.tabbyapi.yml","compose.x.opint.vllm.yml","compose.x.parler.nvidia.yml","compose.x.parllama.ollama.yml","compose.x.perplexica.ollama.yml","compose.x.perplexica.searxng.yml","compose.x.plandex.litellm.yml","compose.x.plandex.llamacpp.yml","compose.x.plandex.ollama.yml","compose.x.sglang.nvidia.yml","compose.x.stt.nvidia.yml","compose.x.tabbyapi.nvidia.yml","compose.x.textgrad.nvidia.yml","compose.x.tgi.nvidia.yml","compose.x.tts.nvidia.yml","compose.x.txtairag.nvidia.yml","compose.x.txtairag.ollama.yml","compose.x.vllm.nvidia.yml","compose.x.webui.airllm.yml","compose.x.webui.aphrodite.yml","compose.x.webui.boost.yml","compose.x.webui.comfyui.yml","compose.x.webui.dify.yml","compose.x.webui.ktransformers.yml","compose.x.webui.litellm.yml","compose.x.webui.llamacpp.yml","compose.x.webui.mistralrs.yml","compose.x.webui.nexa.yml","compose.x.webui.ollama.yml","compose.x.webui.omnichain.yml","compose.x.webui.parler.yml","compose.x.webui.searxng.ollama.yml","compose.x.webui.searxng.yml","compose.x.webui.sglang.yml","compose.x.webui.stt.yml","compose.x.webui.tabbyapi.yml","compose.x.webui.tts.yml","compose.x.webui.vllm.yml","compose.yml","deno.lock","dify/certbot/README.md","dify/certbot/docker-entrypoint.sh","dify/certbot/update-cert.template.txt","dify/nginx/conf.d/default.conf.template","dify/nginx/docker-entrypoint.sh","dify/nginx/https.conf.template","dify/nginx/nginx.conf.template","dify/nginx/proxy.conf.template","dify/nginx/ssl/.gitkeep","dify/openai/Dockerfile","dify/openai/app.js","dify/openai/package.json","dify/override.env","dify/ssrf_proxy/docker-entrypoint.sh","dify/ssrf_proxy/squid.conf.template","docs/harbor-2.png","fabric/Dockerfile","fabric/override.env","gum/Dockerfile","harbor.sh","harbor/__init__.py","hf/Dockerfile","hfdownloader/Dockerfile","http-catalog/airllm.http","http-catalog/aphrodite.http","http-catalog/boost.http","http-catalog/dify.http","http-catalog/hf.http","http-catalog/ktransformers.http","http-catalog/langfuse.http","http-catalog/litellm.http","http-catalog/llamacpp.http","http-catalog/mistralrs.http","http-catalog/nexa.http","http-catalog/ollama.http","http-catalog/omnichain.http","http-catalog/parler.http","http-catalog/plandex.http","http-catalog/sglang.http","http-catalog/stt.http","http-catalog/tabbyapi.http","http-catalog/tgi.http","http-catalog/tts.http","http-catalog/vllm.http","http-catalog/webui.http","install.sh","jupyter/Dockerfile","jupyter/override.env","jupyter/workspace/000-sample.ipynb","ktransformers/Dockerfile","ktransformers/chat.py","ktransformers/override.env","langfuse/.gitkeep","librechat/.env","librechat/.gitkeep","librechat/librechat.yml","librechat/override.env","librechat/start_librechat.sh","litellm/litellm.config.yaml","litellm/litellm.langfuse.yaml","litellm/litellm.tgi.yaml","litellm/litellm.vllm.yaml","litellm/start_litellm.sh","litlytics/override.env","lmeval/Dockerfile","lmeval/override.env","lobechat/override.env","nexa/Dockerfile","nexa/nvidia.sh","nexa/override.env","nexa/proxy.Dockerfile","nexa/proxy_server.py","ol1/Dockerfile","ol1/README.md","ol1/app.py","ol1/override.env","ollama/.gitkeep","ollama/modelfiles/flowaicom-flow-judge.Modelfile","ollama/modelfiles/llama3.1_8b.Modelfile","ollama/modelfiles/llama3.1_q6k_48k.Modelfile","omnichain/Dockerfile","omnichain/custom_nodes/example/example.maker.js","omnichain/entrypoint.sh","omnichain/examples/HarborChat.json","omnichain/files/harbor.prompt","omnichain/openai.ts","omnichain/override.env","open-webui/configs/config.airllm.json","open-webui/configs/config.aphrodite.json","open-webui/configs/config.boost.json","open-webui/configs/config.comfyui.json","open-webui/configs/config.dify.json","open-webui/configs/config.json","open-webui/configs/config.ktransformers.json","open-webui/configs/config.litellm.json","open-webui/configs/config.llamacpp.json","open-webui/configs/config.mistralrs.json","open-webui/configs/config.nexa.json","open-webui/configs/config.ollama.json","open-webui/configs/config.omnichain.json","open-webui/configs/config.override.json","open-webui/configs/config.parler.json","open-webui/configs/config.searxng.json","open-webui/configs/config.sglang.json","open-webui/configs/config.stt.json","open-webui/configs/config.tabbyapi.json","open-webui/configs/config.tts.json","open-webui/configs/config.vllm.json","open-webui/configs/config.x.searxng.ollama.json","open-webui/extras/artifact.py","open-webui/extras/mcts.py","open-webui/start_webui.sh","openhands/override.env","openinterpreter/Dockerfile","package.json","parler/main.py","parllama/Dockerfile","perplexica/override.env","perplexica/source.config.toml","plandex/Dockerfile","poetry.lock","profiles/default.env","pyproject.toml","qrgen/Dockerfile","qrgen/gen.ts","repopack/Dockerfile","repopack/override.env","searxng/settings.yml","searxng/settings.yml.new","searxng/uwsgi.ini","shared/README.md","shared/json_config_merger.py","shared/yaml_config_merger.js","shared/yaml_config_merger.py","stt/override.env","tabbyapi/api_tokens.yml","tabbyapi/config.yml","tabbyapi/start_tabbyapi.sh","textgrad/Dockerfile","textgrad/workspace/000-sample.ipynb","tts/config/pre_process_map.yaml","tts/config/voice_to_speaker.yaml","vllm/Dockerfile","vllm/override.env"] [[tool.poetry.packages]] include = "harbor" diff --git a/searxng/settings.yml.new b/searxng/settings.yml.new index 53b7c24..ae15186 100644 --- a/searxng/settings.yml.new +++ b/searxng/settings.yml.new @@ -88,7 +88,7 @@ server: # If your instance owns a /etc/searxng/settings.yml file, then set the following # values there. - secret_key: "dee52de1cc979941035b8528ac6a3d8a26b0f5b563bfebe2a6c17fb5e35d0aff" # Is overwritten by ${SEARXNG_SECRET} + secret_key: "f87ab4254587ec6e2741239c12abc4d8d005590719221ff80f2d151da29f7a0c" # Is overwritten by ${SEARXNG_SECRET} # Proxy image results through SearXNG. Is overwritten by ${SEARXNG_IMAGE_PROXY} image_proxy: false # 1.0 and 1.1 are supported