π¦ Nika 0.63.0 β Serve Ops
π¦ Nika 0.63.0 β Serve Ops
Inference as Code Β· April 2, 2026 Β· 16 commits
| π§ͺ Tests | π§ Builtins | π¦ Transforms | π Providers |
|---|---|---|---|
| 9,500+ | 41 | 39 | 9 |
β§ infer Β· β exec Β· β fetch Β· β invoke Β· β agent
π§ Nika Goes to Production
This release is about one thing: making nika serve deployable on real Linux servers. Not localhost. Not Docker-on-Mac. Actual systemd-managed services with environment files, automatic restart, and resource limits.
We wrote a proper nika-serve.service unit file with Type=notify readiness signaling β meaning systemd knows exactly when Nika is ready to accept requests, not just that the process started. Combined with Restart=always, MemoryMax, and CPUQuota, you get a production deployment that recovers from crashes and stays within resource bounds.
# /etc/systemd/system/nika-serve.service
[Service]
Type=notify
ExecStart=/usr/local/bin/nika serve --bind 0.0.0.0:3000
EnvironmentFile=%h/.nika/.env
Restart=always
MemoryMax=2G
CPUQuota=200%π Hot Reload Without Downtime
The new POST /v1/reload endpoint re-scans the workflow directory and picks up new, modified, or deleted *.nika.yaml files β without restarting the server. Zero downtime deploys become trivial:
# Deploy new workflows
rsync -av workflows/ server:~/workflows/
# Reload without restart
curl -X POST http://server:3000/v1/reload \
-H "Authorization: Bearer $TOKEN"
# β {"workflows_found": 42}Running jobs are not interrupted. New requests pick up the updated workflow catalog immediately.
π CI/Docker Key Injection
API key management was interactive-only before this release β fine for a developer laptop, painful for CI and Docker. Two new flags solve this:
| Flag | Use Case | Example |
|---|---|---|
--stdin |
Piped from secret manager | echo $KEY | nika provider set anthropic --stdin |
--key-env |
Read from env var by name | nika provider set anthropic --key-env ANTHROPIC_API_KEY |
Both write to the encrypted NikaVault β same XChaCha20Poly1305 + Argon2i encryption as interactive mode. The difference is they work headless.
π‘οΈ Security & Bug Fixes
Four targeted fixes that matter for anyone running nika serve in production:
-
π§ JSON coercion in fetch β When
fetch:received a JSON array or object encoded as a string, downstreamwith:bindings got the raw string instead of native JSON. Now properly coerced back to structured types. -
π Vault NIKA-135 β Clear error message when vault decryption fails (wrong passphrase, corrupted file). Added
nika vault resetsubcommand andnika doctorvault health check for recovery. -
π‘οΈ NIKA-053
$()refinement β Command injection detection was too aggressive:$()in static YAML templates (the author's intent) was blocked alongside$()injected via dynamic data. Now only dynamic injection is blocked. Fixes false positives onpython3 -cpatterns. -
βοΈ
working_dirfrom nika.toml β The[tools] working_dirconfig was parsed but silently ignored by both CLI runner and serve executor. Now properly wired through toexec:verbcwdresolution. Yournika.tomlconfig actually works.
π‘ Quick Example
Deploy Nika as a systemd service on any Linux box:
# Install
curl -fsSL https://raw.githubusercontent.com/supernovae-st/nika/main/install.sh | sh
# Configure
nika provider set anthropic --key-env ANTHROPIC_API_KEY
# Deploy service
sudo cp nika-serve.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now nika-serve
# Verify
curl http://localhost:3000/v1/workflowsπ¦ Install
| Method | Command | |
|---|---|---|
| π | Quick | curl -fsSL https://raw.githubusercontent.com/supernovae-st/nika/main/install.sh | sh |
| πΊ | Homebrew | brew install supernovae-st/tap/nika |
| π¦ | npm | npx @supernovae-st/nika |
| π¦ | Cargo | cargo install nika |
| π³ | Docker | docker run --rm ghcr.io/supernovae-st/nika:0.63.0 |
| π» | VS Code | Search "Nika" or ext install supernovae.nika-lang |
| πͺ | Scoop | scoop bucket add nika https://github.com/supernovae-st/scoop-nika && scoop install nika |
| π§ | AUR | yay -S nika-bin |
π¦ Nika Evolution
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
v0.42 ββββββββββββββββββββββ 8,188 tests
v0.48 ββββββββββββββββββββββ 8,200 tests
v0.52 ββββββββββββββββββββββ 8,938 tests
v0.56 ββββββββββββββββββββββ 9,093 tests
v0.58 ββββββββββββββββββββββ 9,109 tests
v0.61 ββββββββββββββββββββββ 9,407 tests
v0.63 ββββββββββββββββββββββ 9,500 tests β you are here
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π§ 41 builtins Β· π¦ 39 transforms Β· π 7+1+1 providers Β· π¦ 17 crates
Made with π by SuperNovae Studio β Open Source, AGPL-3.0
Full Changelog: v0.62.0...v0.63.0