LIVE · v0.3.14 STANDARD · 4 EXPERIMENTALApache-2.0

heku

One server. Many configs.
Drop a JSON config and your LLM gets the tools instantly.

npx @rapidthoughtlabs/heku start
npm install -g @rapidthoughtlabs/heku
heku start --http --port 3456

Grow your own tools._

An LLM that can extend itself mid-conversation — drop a config and the tools appear live.

[01]

ENCOUNTER

The agent meets a system it has no tools for. User drops in the API docs — a markdown spec, an OpenAPI dump, a few cURL examples.

[02]

AUTHOR

The agent calls heku.create_config and writes the JSON itself. Endpoints. Auth. Tool names. Inline.

[03]

HOT RELOAD

The file watcher picks up the new config. Server stays up. Existing tools stay live. Zero restart.

[04]

CALL

By the next user message, the new tools are in the manifest. Same session. Same client. No human in the loop.

Hot reload is what makes the loop close.
Edit a config, drop in a new one, delete one —
the server never restarts. The watcher does the rest.

No code. No restart. Just config.

One step closer to agents that bootstrap themselves.

4 tools. 354 tokens. Forever._

The MCP protocol sends every tool's schema at connect. 50 configs, 200+ tools — that's ~30,000 tokens before the user types a word. heku exposes only the discovery quartet at cold connect: list_configs · search · invoke · list_tools. 354 tokens. The rest of the native config-management tools are reachable through the quartet when the agent actually needs them.

TOKEN COST AT COLD CONNECT
cold connect — token budget
// Lazy discovery — only the discovery quartet
// Only 4 schemas are sent at connect; the rest are lazy-loaded.
 
// constant regardless of config count
tools/list 354 tokens
 
"Install 5 configs or 5,000. Connect in 354 tokens."
// O(1) in config count. Always.
LAZY MODE — heku.config.json
heku.config.json
{
"manifestStyle": "flat",
"self_config": true,
"log_level": "info"
}
 
// self_config: true enables internal
// connector write ops (create, install, auth).

Eight connectors, one config format.

Each installed config sets a connector.type and the connection details. heku loads it, registers tools in the MCP manifest, and hot-reloads when the file changes. Arrow through the eight types below to see each config shape.

Three tiers. One surface._

The Console is the visual control plane for any running heku instance. Chat with your LLM, manage configs, browse heku hub, and watch live logs — all from the browser. It connects to heku over HTTP through its own Express backend; the browser never talks to heku directly.

BROWSER (CONSOLE UI)
Interactive Chat · Config Manager · Log Viewer
CONSOLE EXPRESS BACKEND
Proxies admin calls · manages heku hub · bridges LLM ↔ MCP
heku SERVER
Loads configs · executes tool calls · hot-reloads on file change
When the Console is served remotely, it automatically derives the bridge URL from the provided MCP endpoint — no extra configuration required.

See it running.

heku runs as a tiny native daemon on macOS, Windows, and Linux. Below is the installer + dashboard view across both desktop platforms — drop screenshots into the placeholders.

macOS
Windows
heku — macOS · 1440 × 900
PLACEHOLDER · 16:10
heku — DASHBOARD
(macOS)drop a 1440×900 screenshot of the macOS app dashboard here
MAC · DASHBOARD
heku — terminal install
PLACEHOLDER · 16:10
CLI INSTALL FLOW
terminal recording or screenshot of npx install
MAC · TERMINAL
heku — connector editor
PLACEHOLDER · 16:10
CONNECTOR EDITOR
JSON config side-by-side with live tool list
MAC · EDITOR

The plumbing is already there._

JSON configs, lazy discovery, hub installs, and scoped env files: the MCP plumbing every project reimplements, shipped once in heku.

built-in modules
heku.status6/6 online

JSON-defined tools

json-tools

Describe a tool in 3 lines of JSON. No SDK to learn, no framework to wire up, no code to maintain.

{
"name":: "list_repos",
"method":: "GET",
"path":: "/user/repos"
}

Stop installing tools for your agent.

Let it install its own.