Version0.1.0
Revision1
Licenseunset
Confinementstrict
Basecore24

AI-powered code knowledge graph server and web interface


Harvest exposes an AI-powered HTTP API and web interface for querying code
knowledge graphs stored in Neo4j. Agents can connect to it to run commands
on remote machines.

Prerequisites
─────────────
A running Neo4j instance (not bundled in this snap).

Quick start
───────────
1. Set required credentials:
  snap set harvest \
    neo4j.password=<neo4j-password> \
    llm.primary.provider=anthropic \
    llm.primary.api-key=<llm-api-key> \
    auth.jwt-secret=$(openssl rand -base64 32)


2. Start the services:
  snap start harvest.serve
  snap start harvest.ui


3. Open http://localhost:3000 in your browser.

Snap configuration keys
───────────────────────
neo4j.host Neo4j hostname (default: localhost)
neo4j.port Neo4j bolt port (default: 7687)
neo4j.user Neo4j username (default: neo4j)
neo4j.password Neo4j password (required)
server.host API bind address (default: 127.0.0.1)
server.port API port (default: 8080)

LLM providers — define any number with user-chosen names:
llm.<name>.provider anthropic | gemini | openai-compatible
llm.<name>.api-key API key (setting this enables the provider)
llm.<name>.model Model name
llm.<name>.base-url Base URL (openai-compatible only)
llm.<name>.timeout-secs Per-request timeout (default: 120)
llm.<name>.max-retries Retry limit per request (default: 3)
llm.<name>.priority Lower = tried first on rate limits (default: 0)

Example — Anthropic primary, Gemini fallback:
snap set harvest \
 llm.primary.provider=anthropic llm.primary.api-key=sk-ant-... \
 llm.fallback.provider=gemini   llm.fallback.api-key=AIza... \
 llm.fallback.priority=1


agent.max-iterations Agent iteration limit (default: 20)
agent.compaction-threshold-chars Context compaction trigger (default: 40000)
agent.compaction-keep-last Messages kept after compaction (default: 6)
auth.jwt-secret JWT signing secret (required)
auth.allow-local-login Enable username/password login (default: true)
auth.google.client-id Google OAuth client ID (optional)
auth.google.client-secret Google OAuth client secret (optional)
auth.google.redirect-uri Google OAuth redirect URI (optional)
auth.oidc.issuer-url OIDC provider URL (optional)
auth.oidc.client-id OIDC client ID (optional)
auth.oidc.client-secret OIDC client secret (optional)
auth.oidc.redirect-uri OIDC redirect URI (optional)
auth.oidc.display-name OIDC provider display name (optional)
agents.public-url Public URL for agent callbacks (optional)
docs.dir Documentation directory (default: $SNAP_COMMON/docs)
ui.enable-docs Show docs page in web UI (default: false)
ui.host Web UI bind address (default: 127.0.0.1)
ui.port Web UI port (default: 3000)

Update History

0.1.0 (1)
27 Jun 2026, 01:00 UTC

Published27 Jun 2026, 00:21 UTC

Last updated27 Jun 2026, 00:21 UTC

First seen27 Jun 2026, 01:00 UTC