A minimal coding agent built in Clojure, with a terminal user interface, streaming LLM conversations, and a local tool loop.
kmet is inspired by two reference harnesses:
- pi — the functionality: minimalism, a terminal-first TUI with a multi-line editor and differential rendering, streaming conversations, one local tool loop, and behavior carried by prompts and tools instead of a privileged core.
- DeepSeek Harness —
the architecture: everything is a plugin. The loop, tools, sessions, model
access, and modes are replaceable rows on one context tree, with services
found by key, dependencies declared with
inject, effects that unwind, and extensions that mount beside the core instead of patching it.
The gap to pi is tracked in pi alignment; the plugin architecture is in the developer guide.
kmet runs on Linux, macOS, Windows, WSL, and Termux from one source tree on three hosts: Babashka (the primary runtime), native Jolt builds, and the JVM (JDK 22+ enables the native clipboard backend; older JDKs still run the app).
- Interactive terminal UI with differential rendering, overlays, and a multi-line editor.
- Built-in
read,write,edit,bash, andrun_codetools — the last runs sandboxed Clojure scripts that return only the output they emit. - Headless RPC mode over EDN stdin/stdout for editors and scripts.
- Provider, authentication, model-catalog, OAuth, and custom-model support.
- Local extensions, skills, prompt templates, themes, and packages (local or git).
- EDNL sessions with branching, compaction, import/export, and sharing.
- Cross-platform source runs on Babashka, Jolt, and the JVM, plus self-contained executables.
Install Babashka 1.13.225 or newer, then run kmet from a checkout:
git clone https://github.com/kmetia/kmet-agent.git
cd kmet-agent
export OPENCODE_API_KEY='your-api-key'
bb startList available models or run a one-shot request with:
bb start --list-models
bb start --print "summarize the project"The same checkout runs on the optional hosts: jolt start on
Jolt and bb start-jvm on JVM Clojure,
which needs the Clojure CLI (and
Java 22+ for the clipboard's native backend). Each host carries its own test
and packaging tasks (bb test-jvm, bb dist-jvm).
Self-contained release binaries skip the Babashka install: download the zip
for your platform from
GitHub Releases — releases
ship kmet-<version>-<platform>.zip (currently v0.1.3), with <platform>
one of linux-amd64, linux-aarch64, macos-amd64, macos-aarch64, and
windows-amd64. Unzip it and run the executable inside the extracted folder:
unzip kmet-0.1.3-linux-amd64.zip
./kmet-0.1.3-linux-amd64/kmet --list-modelsOn Windows run kmet.exe; on Termux run the bundled kmet.sh launcher. The
other hosts follow the same scheme with their own prefix and command: jolt's
kmetj-<version>-<platform>-<link>.zip (<link> is static or dynamic)
runs as kmetj, and the JVM's kmetc-<version>-jvm.zip ships an uberjar with
launchers, needs a Java runtime, and runs as kmetc, so all three can be
installed side by side and invoked by different names.
See Getting started for provider setup, sessions, and installation details.
Start with the user documentation:
- Getting started — requirements, setup, and first run.
- Usage — command-line options, slash commands, shortcuts, and sessions.
- RPC mode — drive a session over EDN stdin/stdout.
- Configuration — settings, prompts, compaction, and resource paths.
- Providers and authentication — API keys, OAuth, and custom models.
- Customization — themes, skills, prompts, packages, and extensions.
- Building — Babashka, Jolt, and JVM distributions.
- Examples — copyable settings and theme files.
kmet (Cyrillic кмет) is an old Slavic word with two complementary meanings: a community leader and a land-bound worker. The name captures the agent's posture—acting with authority on your behalf while staying responsible to the code and people who own it. The longer etymology is in About kmet.
modules/ — application modules and libraries (agent, ai, libs, tui,
loader, tk, reakt, hikap); each is a standalone classpath root
extensions/ — opt-in shipped extensions
jolt/ — Jolt provider scaffolding
docs/ — user-facing documentation
test/ — test suites
tasks/ — development and packaging tasks
scripts/ — repo tooling (git hooks, repros)
Implementation and development references are kept close to their packages —
each module's README.md or design note sits beside its source — and
docs/architecture.md is the contributor's map.
Copyright © 2026 — present Marko Kocic marko@euptera.com
Licensed under the Eclipse Public License 2.0 (EPL-2.0).