MCPcopy Index your code
hub / github.com/Haidra-Org/AI-Horde

github.com/Haidra-Org/AI-Horde @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
1,609 symbols 5,398 edges 128 files 330 documented · 21%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Running ai-horde with Docker


Prerequisites

Build

Run the following command in your project root folder (the folder where your Dockerfile is located):

(The image name can be changed to any name you want.)

docker build -t aihorde:latest .

The default image intentionally omits Pyroscope's native profiling wheels. To build an image that can run with PYROSCOPE_ENABLED=true, include the telemetry-profiling dependency group:

docker build \
    --build-arg AI_HORDE_DEPENDENCY_GROUPS=telemetry-profiling \
    -t aihorde:telemetry .

The published GHCR images follow the same split: ghcr.io/haidra-org/ai-horde:main is the default runtime image, while ghcr.io/haidra-org/ai-horde:main-telemetry includes the profiling group.

with Docker Compose

docker-compose.yaml is provided to run the AI-Horde with Redis and Postgres.

Copy the .env_template file in the root folder to create the .env_docker file.

cp .env_template .env_docker

To use the supplied .env_template with the supplied docker-compose.yaml, you will need to set:

# .env_docker
REDIS_IP="redis"
REDIS_SERVERS='["redis"]'
USE_SQLITE=0
POSTGRES_URL="postgres"

Then run the following command in your project root folder:

# run in background
docker compose up --build -d

Optional tuning environment variables

These are all optional - the image boots with safe defaults. See tests/DEPLOYMENT_CONTRACT.md for the full, authoritative list (required vs optional) that downstream deployers rely on.

SQLAlchemy connection pool

Each replica opens up to SQLALCHEMY_POOL_SIZE + SQLALCHEMY_MAX_OVERFLOW Postgres connections. When running multiple replicas, keep the aggregate under the database's max_connections.

SQLALCHEMY_POOL_SIZE=15       # base pooled connections per replica
SQLALCHEMY_MAX_OVERFLOW=5     # extra burst connections per replica
SQLALCHEMY_POOL_TIMEOUT=30    # seconds to wait for a connection before erroring
SQLALCHEMY_POOL_PRE_PING=0    # 1 to validate connections before use

Telemetry (opt-in)

Telemetry activates when AI_HORDE_TELEMETRY_ENABLED=1 or any OTEL_EXPORTER_OTLP_* endpoint is set (and OTEL_SDK_DISABLED is not true). Common knobs: OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_SERVICE_NAME, DEPLOYMENT_ENVIRONMENT, OTEL_INSTRUMENT_REDIS, OTEL_TRACES_SAMPLER_ARG, and PYROSCOPE_ENABLED (requires the -telemetry image variant).

Core symbols most depended-on inside this repo

get
called by 408
horde/apis/v2/base.py
get_unique_alias
called by 137
horde/classes/base/user.py
add
called by 78
horde/telemetry.py
post
called by 70
horde/apis/v2/base.py
is_anon
called by 45
horde/classes/base/user.py
check_bridge_capability
called by 39
horde/bridge_reference.py
_seconds_histogram
called by 36
horde/metrics.py
record
called by 35
horde/classes/stable/interrogation.py

Shape

Method 876
Function 409
Class 287
Route 37

Languages

Python100%

Modules by API surface

horde/apis/v2/base.py117 symbols
horde/exceptions.py98 symbols
horde/classes/base/user.py77 symbols
horde/database/functions.py66 symbols
horde/classes/base/worker.py50 symbols
tests/unit/test_utils.py48 symbols
horde/apis/v2/stable.py43 symbols
horde/classes/base/waiting_prompt.py39 symbols
tests/unit/test_worker_can_generate.py34 symbols
tests/dependency_runtime.py30 symbols
horde/routes.py30 symbols
horde/classes/stable/interrogation.py30 symbols

For agents

$ claude mcp add AI-Horde \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact