Skip to main content
Useful AI work shouldn’t disappear into chats. Nika turns repeatable AI work into files you can run, review, diff and share: one .nika.yaml file, four verbs, one Rust binary. If you do the same AI task twice, make it a workflow.
Nika runs today: brew install supernovae-st/tap/nika, then nika check and nika run. No API key needed for your first run (--model mock/echo previews any workflow offline).
A repeated chat prompt becomes a workflow file. Real capture: the audit and the run are the actual CLI output, on a local model ($0.000). Repeat an AI task weekly? Send it: nika.sh/convert. We convert the best ones into showcase workflows, credited to you.

What Nika is

A workflow language plus its reference engine. The YAML file is the contract: readable by you, writable by your agents, executed deterministically, audited before a single token is spent. Four verbs (infer, exec, invoke, agent) and nothing else; fetching a URL, writing a file, calling GitHub are all tools under invoke.
workflow.nika.yaml
The permits: block is not decoration and not optional in spirit: an absent one declares zero authority, so any workflow that touches a file, a host or a shell is refused at check (NIKA-AUTH-006) until it says what it needs. nika check --infer-permits writes the tightest one for you.
The nika CLI, nika check, nika run, nika lsp, and read-only nika mcp are live in v. Use nika init once per repo for schema + agent rules, then nika wire <client> when you want an agent client to call the real Nika oracle.

What Nika is not

  • Not an agent framework. No abstractions over agent loops you can’t read.
  • Not a chatbot wrapper. No conversation state hidden in vendor APIs.
  • Not another SDK. The YAML file is the interface.
  • Not a SaaS. AGPL means the source travels with the binary.

I want to…

Scan this table before you dive into a section. It’s the fastest map.

Why YAML

Because the same file is read by the machine and understood by the human. No DSL, no Python-pretending-to-be-config, no JavaScript callbacks scattered across nodes. The schema is the contract.

Why Rust

Because workflows fail in production, and a single binary with zero runtime dependencies fails predictably. Because the engine must be auditable, line by line. Because clippy warnings and zero unwraps in src/ are not aspirational. They are enforced by CI on every commit.

The engine in one diagram

Built in the open, crafted crate by crate under a strict admission discipline. The live engineering state (crates · tests · hygiene) is one click away at Reference · Status, the design at Concepts · Architecture.

Examples · real jobs

What would YOUR Monday look like? Starter to epic, every industry.

How to write Nika

The thirteen patterns of well-written Nika, each taught by a canonical example.

Install Nika

What ships at v, what doesn’t, how to track releases.

Changelog & roadmap

The full arc — origins to v — dated, tagged, subscribable by RSS. And what ships next.

Workflows

How a .nika.yaml file becomes an executed graph.

Providers

Local-first: Ollama · llama.cpp · vLLM · LM Studio, or any cloud API.

Architecture

Six layers. Why L0 has zero async and zero I/O.

The Nika ecosystem

🦋