Skip to content

Kumiho setup

Install and configure the Kumiho MCP sidecar, cloud vs Community Edition, and auth tokens.

Kumiho is Revka’s canonical persistent memory store. The runtime never persists memory itself — it injects a Kumiho MCP sidecar into every non-internal agent, and that sidecar reads and writes a graph-native memory backend over the Model Context Protocol. This page covers installing the sidecar, the [kumiho] config block, choosing between hosted Kumiho Cloud and a self-hosted Community Edition (CE) backend, supplying auth tokens, and verifying the wiring with revka doctor.

Read Memory overview first if you want the conceptual picture of why memory lives in Kumiho rather than a local database. Once the sidecar is installed and reachable, the agent-side usage pattern is covered in Kumiho graph memory.

Revka expects the Kumiho launcher at ~/.revka/kumiho/run_kumiho_mcp.py, backed by a Python virtualenv at ~/.revka/kumiho/venv/. The launcher is a thin shim that runs python -m kumiho.mcp_server from that venv.

Prerequisites

  • Python 3.11+ on PATH.
  • Network access to PyPI — the installer runs pip install 'kumiho[mcp]>=0.9.20'. The [mcp] extra pulls in mcp>=1.0.0 and httpx>=0.27.0.
  • A reachable Kumiho backend URL plus, for cloud, a service token (collected by revka onboard and written to ~/.revka/.env). Without them the MCP process still starts but degrades to stateless operation.

If revka is already on PATH:

Terminal window
revka install --sidecars-only

This is cross-platform and idempotent — safe to re-run. It never overwrites an existing config.toml, .env, or user-authored launcher. Useful flags:

FlagEffect
--sidecars-onlyInstall the Python MCP sidecars only (no binary work).
--skip-kumihoSkip the Kumiho sidecar (install Operator only).
--skip-operatorSkip the Operator sidecar (install Kumiho only).
--dry-runPrint the plan without changing anything.
--with-session-managerAlso install the Node.js live-execution session manager.
--python <path>Use a specific Python interpreter.
Terminal window
mkdir -p ~/.revka/kumiho
python3 -m venv ~/.revka/kumiho/venv
~/.revka/kumiho/venv/bin/pip install --upgrade pip
~/.revka/kumiho/venv/bin/pip install "kumiho[mcp]>=0.9.20"
cat > ~/.revka/kumiho/run_kumiho_mcp.py <<'PY'
#!/usr/bin/env python3
import os, pathlib, sys
HERE = pathlib.Path(__file__).resolve().parent
VENV_PY = HERE / "venv" / "bin" / "python3"
if not VENV_PY.exists():
VENV_PY = HERE / "venv" / "Scripts" / "python.exe"
os.execv(str(VENV_PY), [str(VENV_PY), "-m", "kumiho.mcp_server", *sys.argv[1:]])
PY
chmod +x ~/.revka/kumiho/run_kumiho_mcp.py

The Operator MCP sidecar (multi-agent workflow orchestration) is installed alongside Kumiho by the same scripts. For its details see Install the Python MCP sidecars.

[kumiho] lives in ~/.revka/config.toml and controls sidecar injection, which backend you talk to, and namespace scoping. A representative block:

[kumiho]
enabled = true
mode = "cloud" # or "local_ce"
mcp_path = "~/.revka/kumiho/run_kumiho_mcp.py"
api_url = "https://api.kumiho.cloud" # cloud default
space_prefix = "Revka"
memory_project = "CognitiveMemory"
harness_project = "Revka"
memory_retrieval_limit = 3
KeyTypeDefaultMeaning
enabledbooltrueInject the Kumiho MCP sidecar into non-internal agents. Disable for testing or air-gapped deployments — the agent then runs without persistent memory.
modestring"cloud"Backend selector: "cloud" (hosted, token-based) or "local_ce" (self-hosted, tokenless, loopback-only).
mcp_pathstring~/.revka/kumiho/run_kumiho_mcp.pyPath to the launcher shim. Supports ~ expansion.
api_urlstringhttps://api.kumiho.cloudBase URL for the Kumiho REST API. For local_ce, point at the loopback CE server (http://127.0.0.1:9190).
space_prefixstring"Revka"Prefix that scopes agent memories. Memories are stored under <space_prefix>/<context>.
memory_projectstring"CognitiveMemory"Kumiho project for user memories, sessions, and compactions.
harness_projectstring"Revka"Kumiho project for skills, operational data, and ClawHub installs.
memory_retrieval_limitint3Maximum memories returned per recall/engage call.

The mcp_path is resolved in this order: the config value if non-empty, otherwise the default install location ~/.revka/kumiho/run_kumiho_mcp.py.

Hosted, managed, multi-device, account/token-based. This is the recommended path and the default when you run revka onboard.

[kumiho]
enabled = true
mode = "cloud"
api_url = "https://api.kumiho.cloud"

Cloud requires a service token in the environment (see Auth tokens). During onboarding the memory step offers to create or sign in to a Kumiho Cloud account and generate a token, or to paste an existing one. The token is written to ~/.revka/.env as KUMIHO_SERVICE_TOKEN.

Cloud Kumiho is authenticated with a dashboard-issued service token. Revka reads it from two environment variables, both written to the workspace ~/.revka/.env by revka onboard:

VariableRead byNotes
KUMIHO_SERVICE_TOKENRevka’s gateway / CLI code (FastAPI calls)The value onboarding writes. Preferred.
KUMIHO_AUTH_TOKENThe Kumiho Python SDK inside the sidecarFallback if KUMIHO_SERVICE_TOKEN is unset.

Precedence: KUMIHO_SERVICE_TOKEN wins over KUMIHO_AUTH_TOKEN. When forwarding to the spawned MCP, Revka uses the service token (the onboarded value) so it isn’t shadowed by a stale shell-level KUMIHO_AUTH_TOKEN from another account. The same resolved token is forwarded to the sidecar as KUMIHO_AUTH_TOKEN (what the SDK reads).

If neither variable is set, Revka falls back to the Kumiho CLI’s auth file at ~/.kumiho/kumiho_authentication.json (written by kumiho login), reading its control_plane_token and seeding KUMIHO_SERVICE_TOKEN from it when the token isn’t expired.

Revka does not auto-load arbitrary shell .env files, but it does load the workspace ~/.revka/.env at startup so KUMIHO_SERVICE_TOKEN is available. You can also set KUMIHO_CONTROL_PLANE_URL to override the control-plane URL forwarded to the sidecar.

revka doctor runs structured diagnostics. Two categories cover Kumiho:

Terminal window
revka doctor

sidecars category — checks the Kumiho venv and packages:

  • Resolves the venv from kumiho.mcp_path (<dir>/venv/bin/python, or venv\Scripts\python.exe on Windows).

  • Warns if the venv Python is missing — fix by running scripts/install-sidecars.sh (or the .bat equivalent).

  • Errors if kumiho is not importable (broken venv).

  • Warns if kumiho_memory is missing — the runtime is on the lite bootstrap prompt and advanced reflexes are unavailable. The remediation it prints:

    Terminal window
    ~/.revka/kumiho/venv/bin/python -m pip install 'kumiho_memory>=0.5.0'

If kumiho.enabled = false, the sidecar check is skipped.

kumiho category — checks the backend:

  • Cloud: reports backend: cloud (<api_url>) (a static note — a live probe would need a service token).
  • Community Edition: probes the loopback server with GET /api/_live (asserting deployment_mode=self_hosted_ce) and GET /api/_health, reporting per-component readiness for Neo4j, Redis event-stream, and embeddings. If the server is unreachable it warns and points you to finish kumiho_server onboard (accept the EULA, start the server, ensure Neo4j is running), then re-run revka doctor.

Severity uses three levels: ok, warn, and error. You can also smoke-test the sidecar directly:

Terminal window
# Package import smoke test
~/.revka/kumiho/venv/bin/python3 -c 'import kumiho; print(kumiho.__version__)'
# Confirm the MCP tools loaded: open the gateway tools panel and look for kumiho_memory_*
revka gateway
# then visit http://127.0.0.1:42617/tools

See revka doctor, status & self-test for the full diagnostic surface.

SymptomFix
Log: Kumiho MCP script not found: ~/.revka/kumiho/run_kumiho_mcp.pyRun revka install --sidecars-only (or scripts/install-sidecars.sh).
ModuleNotFoundError: kumiho.mcp_server or ModuleNotFoundError: mcpReinstall with the [mcp] extra: ~/.revka/kumiho/venv/bin/pip install -U 'kumiho[mcp]'.
kumiho_memory_* tools absent from the tools panelMissing token or unreachable backend. Confirm KUMIHO_SERVICE_TOKEN is in ~/.revka/.env; check ~/.revka/logs/ for the sidecar stderr.
Cloud 401 errorsThe token is not a Kumiho service token (e.g. a Firebase JWT). Generate one from Kumiho Cloud → Service Tokens.
CE: reflect reports a save that never persistedRedis unreachable — start kumiho-redis or set KUMIHO_UPSTASH_REDIS_URL.
CE: doctor says not reachable at 127.0.0.1:9190Finish kumiho_server onboard, start the server, ensure Neo4j (7687) is running.
Backend silently degraded (no persistence)api_url unreachable — verify [kumiho].api_url points at a live endpoint.