AGPL-3.0-or-later · forever.

install · v0.116.2

Un binaire. Ta machine.

Installe. Une commande. Ça tourne.

Tu as déjà Claude Code ou Codex. Pas de clé API, pas de modèle à télécharger. Nika, c'est un seul binaire Rust : pas de daemon, pas de compte. Installe-le, puis nika new hello.

macOS · Linux · air-gapped OK

  1. 01 · homebrew

    La one-liner

    macOS ou Linux avec Homebrew : sur ton PATH immédiatement. Vérifie avec nika --version.

    ce que tu devrais voir
    nika --versionnika 0.116.2 (c4cdbeafb)

    real output · nika 0.116.2 · nika --version · re-captured at every release

  2. 02 · script

    Sans Homebrew

    Télécharge le binaire de release vérifié dans ~/.nika/bin et imprime l'unique ligne PATH à ajouter à ton profil shell. Rouvre le terminal et nika --version répond.

    curl -LsSf https://nika.sh/install.sh | sh

    Une toolchain déjà en place ? cargo récupère le tarball de release précompilé, zéro compilation (le binaire arrive sous le nom nika-cli jusqu'à la publication crates.io : un symlink vers le nom public, une fois). nix construit la source exacte de la release via le flake du repo ; le premier run compile, le store met en cache.

    cargo binstall --git https://github.com/supernovae-st/nika nika-cli
    nix run github:supernovae-st/nika
  3. 03 · manuel

    Air-gapped, ou à la main

    Télécharge le tarball de ta plateforme et SHA256SUMS depuis la dernière release, vérifie, puis place nika sur ton PATH. Rien ne téléphone à la maison.

    sha256sum -c SHA256SUMS --ignore-missing
  4. 04 · éditeur

    L'extension éditeur

    supernovae.nika-lang · sur le VS Code Marketplace et Open VSX (Cursor · Windsurf · VSCodium). Elle télécharge le binaire nika de la release correspondante au premier usage, ou réutilise celui déjà sur ton PATH. Tout autre éditeur : nika lsp parle LSP sur stdio · source + issues.

  5. 05 · agents

    Travaille avec tes agents

    Nika est conçu pour être écrit par des agents et relu par toi. nika init dépose le câblage du schema + AGENTS.md dans ton repo pour que Claude Code, Cursor, Codex et les autres écrivent des workflows valides du premier coup ; nika wire ajoute le câblage agent-tool (MCP) explicite là où tu le veux.

    nika init
    nika wire cursor
  6. 06 · premier run

    Zéro clé, zéro téléchargement

    Commence par nika welcome, le miroir : ce que cette machine a déjà (éditeurs · présence des clés, jamais leurs valeurs) et la ligne Next. Sur la release courante cette ligne est nika new hello. Hors ligne, zéro clé, rien d'écrit, une seconde. Une répétition, pas une réponse facturée. Pour garder un fichier : nika new snippets/hello, puis nika check et nika run. Un modèle local ou une clé cloud vient après, pas en premier. nika doctor nomme ce qui est déjà câblé.

    nika welcome
    nika new hello
    nika check hello.nika.yaml
    nika run hello.nika.yaml
    nika doctor
    ce que tu devrais voir
    nika new hellowrote hello.nika.yaml · nika run hello.nika.yamlnika run hello.nika.yaml  🦋 nika · hello · 1 task     permits ✓ declared boundary · default-deny    greet  infer · mock/echo  0ms  ── 1/1 done · ≥ $0.00 (1 unpriced) · elapsed 0.0s ──────────────    wrote .nika/traces    said "mock(echo) · Say hello in French, in one sh…"    see it whole: nika trace outputs    rehearsal · a mock model echoed the prompt — not a real answer    trace: .nika/traces/<this run> · 5 events · chain <hash-chained>

    real output · nika 0.116.2 · nika new hello · re-captured at every release

    hello.nika.yamlsource
    # first file after install · one exec, zero setup, zero keysnika: hellopermits:  exec: ["echo"]tasks:  greet:    exec:      command: ["echo", "hello", "from", "nika"]
    ce que tu devrais voir
    nika check hello.nika.yamlnika check · hello.nika.yaml  PLAN     1 wave · 1 task · max parallelism 1      wave 1 greet (exec · echo)  COST     no infer/agent tasks · $0.00 · exec + mcp spend unpriced  SECRETS  no declared secret reaches an effect · model echo untracked  TYPES    deep references fit the shapes tasks declare · builtin output has none  TOOLS    every named nika: tool is canonical · globs + mcp: not checked  ARGS     every builtin invoke arg key is declared + required args present  SCHEMA   no known-unsatisfiable form in an authored schema: · $ref opaque  GATES    no task proven dead · status literals in vocabulary  WRITES   no two unordered tasks write the same static path · computed paths at run · engine writes .nika/traces  EXEC     no literal argv the exec floor refuses at run · a templated argv is the RUN's verdict  ORDER    no exec: sits downstream of a net-effecting task · unauthored content never reaches a shell  PERMITS  literal + const: args fit the boundary · computed paths + symlinks are the RUN's verdict · exec outside the fs bounds  TRIFECTA no lethal trifecta over the declared permits: without a human gate  JOURNEY internal · 0 sources · 1 destination · 0 model endpoints · no secret reaches an external destination  audited · 1 task · 1 wave · permits exec:echo · est out ≤$0.0000 · 0 hints · risk supervisednika run hello.nika.yaml  🦋 nika · hello · 1 task     permits ✓ declared boundary · exec outside the fs bounds    greet  exec · echo  8ms  ── 1/1 done · $0.00 · elapsed 0.0s ─────────────────────────────    wrote .nika/traces    trace: .nika/traces/2026-09-01T00-31-01Z-cd68.ndjson · 8 events · chain 93c13fc0b1070dce8597db1950c93b0522336270451ef3b1bd51a5da9a4d12e0 · sealed

    real output · nika 0.116.2 · nika check hello.nika.yaml · re-captured at every release

    hello-ai.nika.yamlsource
    # first infer · mock rehearsal · zero keys · zero downloadnika: hello-aimodel: mock/echopermits: {}tasks:  greet:    infer:      prompt: "Say hello in one sentence."      max_tokens: 64outputs:  greeting: ${{ tasks.greet.output }}

si quelque chose accroche

command not found: nika (après le script d'install)

Le script installe dans ~/.nika/bin et imprime la ligne PATH exacte à ajouter à ton profil shell (~/.zshrc, ~/.bashrc). Ajoute-la, rouvre le terminal, et nika --version répond.

export PATH="$HOME/.nika/bin:$PATH"
macOS bloque le binaire (tarball manuel uniquement)

Un binaire téléchargé à la main porte le flag quarantine ; brew et le script d'install non. Retire-le une fois, ou clic droit → Ouvrir.

xattr -d com.apple.quarantine ./nika
derrière un proxy d'entreprise

Le script d'install est du curl pur ; il honore les variables proxy standard pour le téléchargement. Le binaire lui-même ne téléphone nulle part.

HTTPS_PROXY=http://proxy:8080 curl -LsSf https://nika.sh/install.sh | sh
checksum mismatch sur le tarball

Un mismatch signifie un téléchargement corrompu ou trafiqué. Ne le lance pas. Retélécharge le tarball et SHA256SUMS depuis la page de release et vérifie à nouveau.

sha256sum -c SHA256SUMS --ignore-missing

Ensuite : apprends le fichier en 5 minutes · parcours des workflows réels · docs complètes