Mix task reference

August 18, 2026 · View on GitHub

Lemon ships ~70 mix lemon.* tasks across the umbrella. mix help | grep lemon lists them alphabetically with no grouping, which makes the tooling hard to discover. This page groups every task by purpose. For a live, grouped listing from the CLI, run:

mix lemon.help

mix lemon.help reads each task's @shortdoc at runtime, so it never drifts from the code; this document adds the flags, examples, and follow-up notes that the one-liner can't.

Each task's own docs are always available with mix help lemon.<task>.

Packaged and source users: use the release CLI (lemon …) or the matching source wrapper (./bin/lemon …) for normal setup and diagnostics. The Mix commands on this page are the direct contributor interfaces behind those user-facing verbs.

# Installed release
lemon setup
lemon model --provider anthropic
lemon gateway setup
lemon config validate
lemon secrets status
lemon channels
lemon doctor

# Source checkout
./bin/lemon setup
./bin/lemon model --provider anthropic
./bin/lemon gateway setup
./bin/lemon config validate
./bin/lemon secrets status
./bin/lemon channels
./bin/lemon doctor

The installed lemon runtime CLI is included in the minimal and full release profiles. It returns 0 for success, 1 for command failures, and 2 for usage errors; command-specific help returns 0 without running the command. The simulation release does not include this runtime CLI.


Onboarding & setup

Getting a fresh checkout or a fresh machine to a working agent.

TaskPurpose
mix lemon.new NAMEScaffold a new Lemon agent project. Ships in the installer/ archive, not the umbrella — install it with mix archive.install before use. Flags: --channel, --memory, --install.
mix lemon.setupIdempotent first-run setup: derives config/secrets/provider state, creates only missing config and secrets state, skips an already usable provider, and verifies a newly configured provider unless --skip-verify defers its live check. This is the contributor alternative to lemon setup / ./bin/lemon setup.
mix lemon.onboardTop-level interactive provider onboarding. Contributor alternative to lemon model / ./bin/lemon model.
mix lemon.onboard.anthropicInteractive onboarding for the Anthropic provider.
mix lemon.onboard.codexInteractive onboarding for the OpenAI Codex provider.
mix lemon.onboard.copilotInteractive onboarding for the GitHub Copilot provider.
mix lemon.onboard.geminiInteractive onboarding for the Google Gemini CLI provider.
mix lemon.onboard.antigravityInteractive onboarding for the Google Antigravity provider.
mix lemon.providersShow redacted provider readiness.
mix lemon.workspaceInitialize ~/.lemon/agent/workspace bootstrap files.
mix lemon.updateUpdate Lemon: config migration and bundled-skill sync.
mix lemon.hermes.auditAudit Hermes data compatibility without writing files.
mix lemon.hermes.migrateMigrate compatible Hermes data into Lemon.

Secrets

Encrypted secret store plus the voice-specific helper. When running the individual secrets tasks directly, mix lemon.secrets.init must run once to create the master key. The full mix lemon.setup / lemon setup journey initializes a missing master key itself and does not replace an existing one.

TaskPurpose
mix lemon.secrets.initInitialize the Lemon secrets master key.
mix lemon.secrets.set KEY VALUEStore an encrypted secret.
mix lemon.secrets.listList stored secret metadata (no values).
mix lemon.secrets.statusShow encrypted secrets status.
mix lemon.secrets.checkCheck secret resolution sources (env vs. store).
mix lemon.secrets.delete KEYDelete a stored secret.
mix lemon.secrets.import_envImport env-based secrets into the encrypted store.
mix lemon.voice.secretsInteractively set voice API secrets.

Diagnostics & readiness

Read-only, redacted health and configuration reports. Safe to run anywhere.

TaskPurpose
mix lemon.doctorRun Lemon diagnostics and report health.
mix lemon.readinessCompact redacted launch-readiness summary.
mix lemon.configValidate and inspect Lemon configuration (--validate, etc.).
mix lemon.channelsShow redacted Telegram and Discord launch readiness.
mix lemon.usageShow redacted usage, cost, token, and quota diagnostics.
mix lemon.proofsShow redacted local proof artifact status.
mix lemon.mediaShow redacted generated-media and provider-proof readiness.
mix lemon.modelsList known Lemon AI models (--provider, --vision, --thinking, --json).
mix lemon.introspectionQuery agent introspection events.
mix lemon.feedbackInspect historical routing feedback stats.

Quality & CI

The checks that run in mix lemon.quality on every push, plus adjacent guards.

TaskPurpose
mix lemon.qualityRun docs and architecture quality checks (--root, --validate-config).
mix lemon.architecture.docsGenerate architecture boundary docs from policy.
mix lemon.check_duplicate_testsCheck for duplicate test module names.
mix lemon.extension.validateValidate Lemon extension package manifests.
mix lemon.cleanupScan or prune stale docs/agent-loop run artifacts.
mix lemon.evalRun the coding-quality eval harness.

Data, stores & messaging

Durable state and outbound notifications.

TaskPurpose
mix lemon.store.migrate_jsonl_to_sqliteMigrate Lemon store data from JSONL files to SQLite.
mix lemon.memoryManage the durable memory store (stats / prune / erase).
mix lemon.policyManage per-route model policies (channel / account / peer / thread).
mix lemon.sendSend a Telegram or Discord notification from a script.

Skills

TaskPurpose
mix lemon.skillManage Lemon skills (discover / install / update / remove).
mix lemon.skill.lintLint skill bundles for manifest compliance and audit cleanliness.

Benchmarks (platform)

TaskPurpose
mix lemon.benchRun the platform microbenchmark suites. See benchmarks/quickstart.md.

Sim & arena

lemon_sim contributes 26 tasks. They fall into four sub-groups.

Scenario runners (self-play)

Each runs one scenario's self-play example. All share the common flags --seed, --max-turns, --offline-strategy, --no-persist, and --sim-id (run mix help lemon.sim.<scenario> for scenario-specific options).

auction, courtroom, diplomacy, dungeon_crawl, intel_network, legislature, murder_mystery, pandemic, poker, skirmish, space_station, startup_incubator, stock_market, supply_chain, survivor, tcg_shop, tic_tac_toe, vending_bench, werewolf (19).

mix lemon.sim.tic_tac_toe --offline-strategy random --seed 42 --no-persist --max-turns 10
mix lemon.sim.vending_bench --preset ci --offline-strategy baseline --sim-id vb_ci

Replay renderers

TaskPurpose
mix lemon.sim.replay <scenario> <log>Render any scenario's JSONL game log into a video.
mix lemon.sim.vending_bench_replay DIRBuild a static HTML replay browser from a VendingBench artifact directory (not a video).

mix lemon.sim.replay handles every video scenario through one task, backed by each scenario's shared VideoGenerator. Scenarios: skirmish, auction, courtroom, diplomacy, dungeon_crawl, intel_network, legislature, murder_mystery, pandemic, poker, space_station, startup_incubator, stock_market, supply_chain, survivor, werewolf. A single positional argument is treated as a skirmish log for backwards compatibility.

mix lemon.sim.replay poker apps/lemon_sim/priv/game_logs/poker/abc.jsonl
mix lemon.sim.replay werewolf werewolf.jsonl --fps 3 --output werewolf.mp4

VendingBench keeps a separate task because its replay is a static HTML browser, not a video. tic_tac_toe and tcg_shop have no replay renderer.

Scoring & verification

TaskPurpose
mix lemon.sim.score PATHPrint the scorecard for a run artifact bundle.
mix lemon.sim.verify PATHVerify a run artifact bundle.
mix lemon.sim.verify apps/lemon_sim/priv/game_logs/vending_bench/vb_ci
mix lemon.sim.score  apps/lemon_sim/priv/game_logs/vending_bench/vb_ci

Suites, leaderboards & ratings

TaskPurpose
mix lemon.sim.suiteRun a benchmark suite and write a leaderboard (--scenario, --preset, --seeds, --offline, --external-cmd, --out).
mix lemon.sim.leaderboard PATHPrint and rewrite a suite leaderboard (--recompute).
mix lemon.sim.ratingsAggregate suite leaderboards into cross-suite model ratings (--root/--suites, --out).

Not a mix task

scripts/release_package is a shell script, not a mix task — invoke it directly (scripts/release_package <package>). It is not listed by mix lemon.help.


Sim task consolidation notes

Done — replay renderers. The 15 per-scenario *_replay tasks were folded into the single parameterized mix lemon.sim.replay <scenario> <log>. They were near-identical thin wrappers over each scenario's shared VideoGenerator (LemonSim.Examples.Rendering.DomainVideoGenerator), so one registry-backed task covers them all. vending_bench_replay stayed separate (it builds a static HTML browser, not a video). Net: 15 tasks removed with no loss of capability.

Deliberately not done — scenario runners. The 19 mix lemon.sim.<scenario> runners look consolidatable but are not: each has a distinct switch set and calls distinct example-module entrypoints (e.g. werewolf does multi-model per-seat assignment via --models/--player-count; vending_bench has --preset and offline strategies; tic_tac_toe has --offline-strategy). A single mix lemon.sim <scenario> would either be a leaky mega-task branching on scenario, or a dispatcher that still keeps all 19 modules — both worse than 19 focused tasks. vending_bench is also called directly by CI (scripts/ci_sim_bench.sh, scripts/generate_sim_demo_bundles.sh). Left as-is.