Installation

This chapter installs the ares-server binary. Pick one method:

  • Install from crates.io with cargo install.
  • Build from source with cargo build.

Prerequisites

You need a Rust toolchain. The crate declares rust-version = "1.98", so use Rust 1.98 or newer. Check your version:

$ rustc --version

Install Rust through rustup if you do not have it.

Install from crates.io

The crate is published as ares-server. Install it without pinning a version:

cargo install ares-server

To include the embedded web UI in the build, add the ui feature:

cargo install ares-server --features ui

The install puts the binary in $HOME/.cargo/bin. Make sure that directory is on your PATH.

Build from source

Clone the repository and build the release binary:

git clone https://github.com/dirmacs/ares
cd ares
cargo build --release

The binary lands at target/release/ares-server. Copy it to a directory on your PATH, or call it by path.

Feature flags

Features select LLM providers, database backends, and vector stores. The table lists every feature of the ares-server package.

FeatureWhat it enables
defaultpostgres, openai, ares-vector, mcp, inventory, rhai-policy
openaiOpenAI API and compatible endpoints such as NVIDIA NIM
azureAzure AI Foundry chat completions
bedrockClaude on AWS Bedrock
postgresPostgreSQL tenant database through sqlx (default)
tursoTurso/libSQL, an edge-native SQLite-compatible store
ares-vectorEmbedded pure-Rust vector store with HNSW (default)
lancedbLanceDB embedded vector store; needs protoc
qdrantQdrant vector database client
pgvectorpgvector, a PostgreSQL extension for vectors
chromadbChromaDB vector database client
pineconePinecone managed vector database (alpha)
mcpMCP protocol glue, client, auth, and registry
inventoryCordis static registration at compile time (default)
rhai-policyRhai policy scripts on kernel events (default)
eruka-contextPer-agent context injection from Eruka
local-embeddingsONNX local embedding models; not on Windows MSVC
hmrHot swap of compiled plugins through dlopen
skillsSKILL.md discovery and loading
emailEmail sending over SMTP
search-toolsWeb search and scraping tools
uiEmbedded Leptos web UI served by the backend
swagger-uiInteractive API documentation pages

Feature bundles combine several flags:

BundleContents
all-llmopenai, azure, bedrock
all-dbpostgres
all-vectorstoresares-vector, qdrant, pgvector, chromadb, pinecone
local-vectorstoresares-vector only
fullAll LLM providers, postgres, qdrant, ares-vector, mcp, swagger-ui
full-uifull plus ui
minimalNothing optional

Choose feature combinations

Features compose along three independent axes. Pick one option per axis:

  1. LLM providers (openai, azure, bedrock, or none for Ollama). These add provider clients to ares-llm. They do not interact with each other, so all-llm is safe when you want runtime choice.
  2. Database backend (postgres or turso). The server binary requires the postgres feature. A binary built without it prints a rebuild hint and exits with code 1 at startup (src/main.rs compiles a stub main without it). Keep postgres unless you embed the library and run no HTTP server.
  3. Vector store (ares-vector, qdrant, pgvector, chromadb, pinecone, lancedb). Clients are additive. local-vectorstores keeps the build small because only the embedded store compiles.

Cross-axis rules worth knowing:

  • postgres also gates sqlx code paths in ares-store, ares-agent, ares-mcp, ares-tools, and ares-http through feature forwarding.
  • mcp, inventory, and rhai-policy ride in default; dropping default drops all three. Re-add them explicitly if you build with --no-default-features plus your own picks.
  • swagger-ui needs nothing extra, but the OpenAPI document includes RAG paths only when both local-embeddings and ares-vector are on (see the #[cfg(all(...))] gate around the OpenApi derive in src/main.rs).

Some features cost real compile time or native dependencies:

FeatureCost
lancedbNeeds the protoc compiler on PATH at build time
local-embeddingsPulls the ONNX Runtime; unsupported on Windows MSVC; slow link step
uiBuilds the embedded Leptos UI as part of the crate; longest cold build of any single feature
full-uiEverything above together; budget several minutes on a modest machine

For a first install, stay on defaults plus what you actually call. Defaults already give you postgres, openai, ares-vector, mcp, inventory, and rhai-policy.

Build offline or air-gapped

The repository ships no vendor directory. For an air-gapped machine, vendor dependencies on a connected machine first:

cd ares
cargo vendor vendor

Copy the whole tree, including vendor/, to the target machine. Then point Cargo at it through .cargo/config.toml next to Cargo.toml:

[source.crates-io]
replace-with = "vendored-sources"

[source.vendored-sources]
directory = "vendor"

Build with cargo build --release --offline. Two notes apply:

  • SQL migrations live inside the ares-store crate and ship inside the published package, so an offline build needs no external migration files.
  • The default TLS stack uses rustls, so you need no system OpenSSL headers. If a non-default feature drags in OpenSSL on a host without pkg-config/libssl-dev, enable its vendored form in Cargo.toml (see the commented vendored example near the end of the dependency list) instead of installing system packages.

Troubleshoot installation

SymptomCauseFix
package \ares-server v0.10.0` cannot be built because it requires rustc 1.98 or newer`Toolchain older than the declared rust-versionRun rustup update stable, then retry
Installed binary prints requires the \postgres` feature` and exits 1Built or installed with --no-default-features or without postgresReinstall with --features postgres, or keep default
error: failed to run custom build command naming protoclancedb enabled without Protocol Buffers compilerInstall protoc, or drop lancedb from --features
Link errors mentioning ONNXRuntime under local-embeddingsMissing ONNX Runtime library, or Windows MSVC hostInstall ONNX Runtime, or use a remote embeddings endpoint without the feature
ares-server: command not found after install$HOME/.cargo/bin missing from PATHAdd export PATH="$HOME/.cargo/bin:$PATH" to your shell profile
Build succeeds but /ui returns 404ui feature absent from this binaryRebuild with --features ui

Compile-time versus run time matters here. Features such as openai, azure, or bedrock decide which provider code exists inside the binary. A provider that is absent at compile time cannot appear at run time by editing ares.toml. Configuration selects among compiled-in options; it never adds new ones.

Verify the install

Print the version:

$ ares-server --version
ares-server 0.10.0