Skip to main content

Core Philosophy

Why Yuki Exists

Modern AI coding agents are powerful, but their deployment is unreliable. Each developer has different tools installed. System prompts drift over time. MCP servers download dependencies at runtime. There's no audit trail of what the agent could do.

Yuki solves this by applying the same principles that make NixOS systems reproducible to AI agent sessions.

The Core Insight

Yuki treats the agent session as a pure function:

Nix Module Config → Derivation → /nix/store/...-yuki

Given the same inputs, you always get the same output.

Design Principles

1. Reproducibility Over Convenience

If something can't be pinned, it shouldn't be in the harness. Every tool, configuration, and dependency is resolved at build time.

  • Tool versions are Nix packages
  • System prompts are in modules
  • MCP servers are in the Nix store
  • Nothing is downloaded at runtime

2. Declarative Over Imperative

You declare what the session is, not what to do:

# Declarative - what it IS
claudeCode = {
model = "sonnet";
tools.allowed = [ "read" "bash" ];
};

# Imperative - what to DO (NOT how Yuki works)
# run --model sonnet --tools read,bash

3. Composition Over Inheritance

Profiles are Nix modules. They compose deterministically:

# These merge, they don't conflict
imports = [
./profiles/base.nix
./profiles/rust-dev.nix
./profiles/security.nix
];

4. Build-Time Over Runtime

Resolve everything before the agent starts:

User runs: nix build .#profile

Nix evaluates modules

Resolves toolchain to Nix store paths

Generates shell script

User runs: ./result/bin/yuki

Agent starts with pre-resolved environment

5. Hermetic by Default

The sandbox is a module option, not a runtime flag:

claudeCode.sandbox = {
enable = true;
allowNetwork = false;
};

enable = true means always sandboxed, for everyone, everywhere.

The Nix Analogy

NixOSYuki
System packagesToolchain packages
/etc/nixos configurationProfile configuration
Declarative system stateDeclarative agent state
Content-addressed storeContent-addressed derivations
Reproducible systemsReproducible agent sessions

What Yuki Is Not

  • Not a shell alias
  • Not a runtime plugin manager
  • Not a prompt templating tool
  • Not a wrapper that downloads things at runtime

Trade-offs

BenefitTrade-off
ReproducibilityMust use Nix
Declarative configLearning curve for Nix
Audit trailStore paths are long
Team standardizationRequires team buy-in

When to Use Yuki

  • Team standardization is important
  • CI/CD consistency matters
  • Audit trails are required
  • You value reproducibility

When Not to Use Yuki

  • Quick prototyping
  • One-off tasks
  • No Nix knowledge in team

See Also