fusionkit
Get started

Installation and prerequisites

Install the CLI and the tools it orchestrates.

Install the CLI

For standalone routing without the ensemble runtime, install RouteKit:

npm install -g @velum-labs/routekit
routekit config init
routekit doctor

This provides routekit and requires neither the FusionKit package nor its Python executable. RouteKit uses explicitly configured providers and does not download or start local models. Its singleton daemon owns ~/.config/routekit/router.yaml; routekit config init creates that canonical document.

For model ensembles, install FusionKit:

npm install -g @fusionkit/cli

Prefer not to install globally? Use npx @fusionkit/cli <command> for the same CLI surface, for example npx @fusionkit/cli doctor.

This provides the fusionkit command. Pre-provision the Python fusion engine once so the first real run does not wait on a uvx cold start:

fusionkit setup

setup is optional but recommended for the first machine setup. Without it, FusionKit provisions the Python engine automatically on the first real run.

Prerequisites

fusionkit orchestrates other tools, so a few things must be available. Run fusionkit doctor at any time for a live checklist with fix hints.

uv / uvx (required)

The synthesizer ships as the fusionkit distribution on PyPI and is run via uvx. Installing uv gives you uvx; no manual Python setup is needed.

A coding agent (required)

At least one of:

You only need the agent you plan to launch. For example, fusionkit codex does not require Claude Code or Cursor to be installed.

RouteKit providers and credentials

For FusionKit's embedded router, run fusionkit init, then edit the generated .routekit/router.yaml to enable providers. This project file is an explicit Fusion/SDK input, not an implicit scope for the standalone RouteKit daemon. To use it with the singleton daemon, replace the canonical document explicitly:

routekit config import --from .routekit/router.yaml

API providers read the registry-defined environment variable:

export OPENAI_API_KEY=...

The first-launch subscription providers are claude-code and codex. Enroll one with routekit accounts login claude-code --name <label> or routekit accounts login codex --name <label>, or use accounts add to import that official CLI's current login. FusionKit v4 stores only live namespaced RouteKit model IDs and never reads provider credentials. This repository's committed router uses OPENROUTER_API_KEY. fusionkit doctor reports missing model IDs; routekit doctor owns provider credential checks.

Before enabling a provider or subscription, review its credential, billing, egress, failover, and limitation disclosure. OpenRouter is an aggregator, while the direct API and native subscription routes have different credential and billing boundaries.

A git repository (required)

The panel fuses over the code in your current repo. Run fusionkit from inside your project, or pass --repo <dir>.

Verify

fusionkit doctor
fusionkit setup       # warms the Python engine
fusionkit --version   # prints the npm CLI and pinned PyPI synthesizer versions

After doctor passes, run the first session from inside a git repository:

cd your-git-repo
fusionkit codex   # or: fusionkit claude | fusionkit cursor | fusionkit serve

Optional: stable named URLs with portless

Every service the stack starts, including the panel servers, the gateway your agent connects to, and the observability dashboard, can be registered with portless so it is reachable at a stable HTTPS name (for example https://gateway.fusion.localhost) instead of a raw port, and reused across runs.

npm install -g portless    # needs Node >=24
portless service install   # run the HTTPS proxy at OS startup
portless trust             # add the local CA to your system trust store

When portless is not installed, the stack transparently falls back to loopback ports. Pass --no-portless (or set PORTLESS=0) to force ports for a single run, for example in CI.