marchyo.ai
installs per-user AI clients wired to OpenRouter (an OpenAI-compatible
aggregator), adds task-based model routing, a local OpenViking context
layer, MCP tools, and a set of Agent Skills surfaced to every client.
Your API key never enters the Nix store: it is supplied through a
sops-nix secret (or any runtime file) and
read at startup.
Quick start
Clients
- aichat — terminal chat client, also bound to
Super+A(floating terminal). - pi — Armin Ronacher’s minimal coding agent, wired to OpenRouter via a
registered provider (
~/.pi/agent/settings.json+ an extension). - claude-code — installed for convenience, but it speaks the Anthropic API and is not wired to OpenRouter; authenticate it separately.
Options
Model routing
marchyo.ai.routing maps task buckets to a primary OpenRouter model plus a
fallback chain (consumed as OpenRouter’s native models array, which auto-fails
over on errors/rate-limits). Defaults pin the frontier/reasoning buckets and lean
on openrouter/auto and the :nitro/:floor variant suffixes elsewhere so
quarterly model churn is absorbed. Slugs are starting points — verify them
against OpenRouter’s live model list and adjust. Every default is overridable:
frontier, everydayCoding, fast, reasoning, summarize,
longContext, budget, local (placeholder). The resolved policy is exported to
~/.config/marchyo/ai-routing.json, and each bucket is available as an aichat
role (aichat -r frontier).
Context / memory (OpenViking)
marchyo.ai.context.enable installs the OpenViking ov
CLI — a local context database for AI agents. Data stays under
~/.openviking/workspace (configurable via context.workspacePath); embeddings
are pointed at OpenRouter. The key is injected into ~/.openviking/ov.conf at
activation (never in the store). Index your skills with
ov add-resource ~/.claude/skills.
Only theovCLI is packaged (not the separateopenviking-server), socontext.service.enableis not wired yet.
Skills
marchyo.ai.skills installs Marchyo Agent Skills (SKILL.md) — marchyo-config
and nix-build-debug — to every client in skills.clients. claude-code
(~/.claude/skills) and pi (~/.pi/agent/skills) consume the Agent Skills
standard natively; aichat gets each skill as a role. Add more skills by dropping
<name>/SKILL.md dirs under modules/home/ai-skills/skills/.
MCP tools
marchyo.ai.mcp wires mcp-nixos into
claude-code (merged into ~/.claude.json), giving grounded NixOS package/option
lookups (no hallucinated attr names). It runs via uvx (uv is installed).
Supplying the key with sops-nix
age-keygen -o ~/.config/sops/age/keys.txtand record the public key.- Add a
.sops.yaml, thensops secrets/ai.yamlcontainingopenrouter-api-key: sk-or-v1-.... - Declare the secret and point Marchyo at its path:
sops NixOS and Home Manager modules are wired into Marchyo’s defaults — you
only declare the secret and provide your age key.
Local inference
marchyo.ai.local.enable is declared but not implemented; enabling it fails an
assertion. Use OpenRouter for now.