Without Let'em Cook
Every outcome starts over.
- Tokens
- Context reconstruction
- Implementation
- Credential setup
- Validation
- Execution and handoff
One outcome
Empower forward deployed engineers to build
Let'em Cook converts one-off AI work into reusable, governed Tools your team can securely run and share. Each versioned recipe carries the context, inputs, permissions, execution policy, and proof people and agents need to call it again—without paying the token and engineering cost of rediscovery.
Without Let'em Cook
One outcome
With Let'em Cook
The bottom line
Jared hands Chris a button
A 24-hour GCP jump host moves from Jared’s operating knowledge to one governed action Chris can run himself—or ask an agent to run through the same authenticated path.
01 Ask for the capability
Chris wants the ability to create a GCP jump host. But Chris tends to be forgetful and may leave it running for a long time. And that guy cannot be trusted with reusable GCP auth tokens to save his life.
02 Author the operating contract
Jared already has code that does the job, but handing it to Chris would create a stale copy—and sharing the GCP credentials behind it is out of the question. He asks Codex to turn his prechecks, approved GCP project and subnet, connection-result contract, failure paths, and mandatory 24-hour teardown into one reviewed recipe.
03 Bind least privilege
Jared creates a GCP service account limited to compute.instances.create/get/delete, disk lifecycle, and the approved subnet. He pipes its JSON key to lemcli cookbooks secrets set "$COOKBOOK_UUID" GCP_JUMP_HOST_KEY --stdin; Chris receives the action, never the value.
04 Package and publish
Codex packages the GCP tooling in a tested container, then drives lemcli to publish its managed digest and the cookbook—wiki, form, launch recipe, 24-hour teardown recipe, secret declaration, and expected receipt—and bind its secret. The recipe gives Codex only the GCP_JUMP_HOST_KEY reference; at binding time, lemcli streams the value from Jared-controlled input straight to LEMC, so Codex never sees or records the credential.
05 Grant the outcome
Jared installs the cookbook as an app and grants Chris run access. Chris can read the operating context and launch the approved job, but he cannot read the GCP key, edit the cookbook, or turn the app into general cloud access.
06 Run it by hand
Chris signs into LEMC, opens Jared’s app, reviews the wiki and permitted inputs, then clicks Build jump host. The browser follows the authorized job and renders the result as it arrives.
07 Delegate the same action
Chris installs lemcli, sets the LEMC base URL, and authenticates as himself. Then he tells Grok: “Hey, Jared made an app that lets me spin up a 24-hour jump host. Find it, launch it, and print the details when it’s done.” Grok discovers the authorized action and runs it with Chris’s exact rights.
08 Mark what this run owns
At runtime LEMC resolves the secret only inside the authorized job. The recipe labels every label-capable asset with the resource UUID, task ID, Chris’s normalized username, recipe identity, and expiry; names or metadata carry the same run key where GCP has no labels.
09 Return proof, then clean up
Whether Chris clicks or Grok calls lemcli, LEMC applies the same API authorization, injects the same hidden binding, and returns the same host details, expiry, task ID, and terminal reason. At 24 hours, teardown locates the exact label tuple, verifies ownership, deletes only those assets, and preserves the result.
Install + first demo
The hosted beta path will use stock OpenSSH through LEMCSSH at a
versioned demo-vN.letemcook.dev
host. Native
lemcli remains the authoring path, while teams ready
to own the runtime can install the Linux/KVM server stack.
Native authoring client
lemcli for the authoring path.The installer detects Linux amd64 or arm64, resolves the current first-party release, verifies its SHA-256 checksum, and installs only the matching CLI. The hosted demo itself needs only stock OpenSSH.
$ curl -fsSL https://letemcook.dev/lemcli/install.sh | bash
Installed lemcli 0.x to /usr/local/bin/lemcli (amd64)
$ lemcli version
lemcli 0.x · linux/amd64
Planned hosted beta entry
An accepted beta invitation will name the concrete demo generation, exact username, public-key enrollment flow, and host-key fingerprint. Verify that fingerprint out of band; LEMCSSH is a restricted LEMC command endpoint, never a server shell.
$ ssh-keygen -t ed25519 -a 64 -f ~/.ssh/lemc-demo
# Enroll only ~/.ssh/lemc-demo.pub after invitation.
# ~/.ssh/config
Host lemc-demo-vN
HostName demo-vN.letemcook.dev
Port 2222
User YOUR_EXACT_USERNAME
IdentityFile ~/.ssh/lemc-demo
IdentitiesOnly yes
StrictHostKeyChecking yes
$ ssh lemc-demo-vN auth whoami --format=json
{"username":"YOUR_EXACT_USERNAME","account":"invited-account"}
$ ssh lemc-demo-vN apps list --format=json
From demo Run to authored Tool
lemcli when you are ready to publish.LEMCSSH exposes reviewed remote-safe commands for discovering and running the demo. Native lemcli owns local authoring and secret binding, so the downloaded key stays outside the Git checkout and model context.
$ lemcli init
LEMC server URL: https://demo-vN.letemcook.dev
Account: invited-account
Username: YOUR_EXACT_USERNAME
Password: ••••••••••••••••
✓ Server capability contract verified
✓ Context "demo-vN" is ready
$ lemcli auth whoami --format=json
{"username":"YOUR_EXACT_USERNAME","account":"invited-account"}
$ lemcli cookbooks create --name "GCP Server Lifecycle"
Created cookbook GCP Server Lifecycle (cb_7f31)
$ lemcli cookbooks push --uuid cb_7f31 --file cookbook.yaml
Published cookbook.yaml
$ lemcli cookbooks secrets set cb_7f31 \
GCP_SERVICE_ACCOUNT_JSON \
--from-file ../credentials/gcp-service-account.json
✓ Configured GCP_SERVICE_ACCOUNT_JSON · value never returned
Linux/KVM server
Use an amd64 Linux host with systemd, /dev/kvm, and nested virtualization. On exe.dev, use its default boldsoftware/exeuntu image. Choose caddy for a personal VPS with public ports 80/443, or exe-dev when exe.dev terminates HTTPS and forwards to port 8000.
$ test -c /dev/kvm && echo "KVM ready"
KVM ready
$ curl -fsSL https://letemcook.dev/lemc/install.sh | sudo bash
# Omit sudo when already logged in as root.
Edge mode (caddy or exe-dev) [caddy]: exe-dev
Public LEMC hostname [lemc.example.com]: cook.acme.example
Installation directory [/opt/lemc]:
Compose-owned runtime
It installs Docker and the pinned Compose plugin when needed, verifies the signed Compose inputs and digest-pinned web and runner images, writes root-only bootstrap input, then starts one private LEMC, Redis, registry, RustFS, and runner graph. The selected edge is either Caddy or exe.dev on port 8000.
✓ Docker Compose ready
✓ Signed web and runner images verified
✓ Redis and private registry healthy
✓ Embedded Firecracker provider verified
✓ LEMC server healthy
LEMC 2026.07.23.1 is healthy at https://cook.acme.example/
Client/server separation
lemcli on the workstation next.The server installer never creates a workstation credential. Switch back to the client tab, install lemcli locally, and authenticate through first-use onboarding.
$ lemcli init
LEMC server URL: https://cook.acme.example
✓ Server capability contract verified
✓ Context "default" is ready
Build with an agent
Codex runs lemcli help, reads the current contracts, and drafts two reviewed GCP server lifecycle recipes. It can confirm the server binding by name and run the reviewed action, but the GCP secret value remains outside model context.
Claude reads the installed lemcli help and drafts the same timed GCP lifecycle without receiving the service-account value.
Grok drafts the same ownership-scoped GCP cookbook and keeps the service-account value outside the agent transcript.
Gemini maps the GCP image lifecycle to LEMC actions, callbacks, durable state, and an operator review checklist without receiving the service-account value.
Resulting cookbook
Create a replacement safely, or tear down the tracked server now. Both actions use the same guarded computation.
cookbook:
name: GCP Server Lifecycle
canonical_name: gcp-server-lifecycle
environment:
secrets:
- GCP_SERVICE_ACCOUNT_JSON
pages:
- page: 1
name: Timed GCP server
recipes:
- recipe: Create a server
canonical_name: create-server
description: Create one server and tear it down after 24 hours.
callbacks:
before_run:
steps:
- step: 1
name: Destroy if present
image: gcp-server-destroy:dev
timeout: 10.minutes
now:
steps:
- step: 1
name: Apply the declared server
image: gcp-server-create:dev
timeout: 20.minutes
in:
duration: 24.hours
steps:
- step: 1
name: Destroy after TTL
image: gcp-server-destroy:dev
timeout: 10.minutes
- recipe: Destroy the server now
canonical_name: destroy-server-now
description: Verify & destroy server
now:
steps:
- step: 1
name: Destroy the tracked server
image: gcp-server-destroy:dev
timeout: 10.minutes
One review. One publish.
The cookbook, container, Terraform, and tests stay readable together. At runtime, the published action keeps reviewed defaults, a server-bound secret, timed teardown, and immutable image references on one path.
cookbook.yaml · Dockerfile · terraform/ · tests/
lemcli cookbooks images push --build
The agent may write the declaration and invoke lemcli.
A human or protected local input supplies
../credentials/gcp-service-account.json; the value never needs to
appear in the prompt, cookbook YAML, logs, or returned artifacts.
Where LEMC earns its keep
Start with work that is repeatable, privileged, infrequent, time-bound, or expensive to explain. Those are the jobs where a shared wiki, fixed runtime, narrow ACL, and durable receipt pay for themselves.
Bind a scoped, expiring DigitalOcean token and source-site access. A pinned recipe snapshots and inventories the site, provisions a clean host, installs a WordPress release with the WP2Shell fix, migrates reviewed content, and stages a preview before cutover.
LEMC retains source inventory · backup manifest · Terraform state · checksums · validation · cutover proof
Put the owned target inventory, scan window, fixed Nmap profiles, exclusions, and retention in the wiki. A teammate or agent selects a declared scope; the recipe runs without arbitrary flags and turns the evidence into a branded PDF.
nmap → XML → PDF
Durable receipt target-set revision · exact profile · raw XML checksum · PDF artifact · terminal proof
Put source rules, output rules, and retention in the page wiki. Supply a Netscape-format cookie file through a cookbook secret binding; only the assigned media team can run the app, and the cookie never appears in logs or output.
yt-dlp → ffmpeg
Durable receipt request · source metadata · selected format · MP3 checksum · jail cleanup
A trainer publishes a Terraform-backed cookbook for the
full stack. Learners launch from the web; an agent can run
the same action through lemcli.
NOW provision the stack
IN 24h tear it down
Durable receipt form inputs · private state · provision result · teardown proof
Explore restore drills, diagnostics, Day-2 operations, cloud hygiene, and more
One unit, two callers
Publish the cookbook once. Teammates read its wiki and click a clear browser action; agents discover the same wiki, inputs, and action contract through structured CLI output. Nobody invents a second automation path.
Caller 01
Recipe action
Wiki guidance, forms, permissions, progress, rich output, and terminal reason stay legible to the person doing the work.
Caller 02
$ lemcli jobs surface app \
--uuid "$APP_UUID" \
--scope individual \
--format=json
$ lemcli jobs run app \
--uuid "$APP_UUID" \
--action "$ACTION_ID" \
--follow \
--render html
Page wiki_text, stable action IDs, JSON discovery,
idempotent admission, live follow output, status, logs, and
artifacts keep agents on the same governed path.
Ephemeral compute, durable work
Trigger a cookbook from the web, lemcli, or a schedule.
LEMC gives that job fresh isolated compute, streams its progress,
saves its work, and removes the runtime when the job ends.
Ephemeral compute
Every hosted-untrusted job gets one fresh jailed Firecracker microVM. LEMC loads authorized, digest-pinned container steps, brokers the narrow access they need, and destroys the guest on success, failure, cancellation, timeout, or lost heartbeat.
fresh guest · pinned image · bounded policy · proven teardown
Durable record
Live events, terminal state, logs, rendered output, artifacts, cache, and workspace state return to LEMC before cleanup. The team can review the result, download its artifacts, or hydrate later work without keeping the microVM alive.
one task ID · later review · reusable output · central proof
Think “team-owned mini Lambda,” not AWS API compatibility. The useful analogy is submit → isolate → run → retain → tear down, with your LEMC server holding policy and proof.
Comparison, not dependency
Connecting the tool is the easy part. Teams still have to keep implementations current, decide who can change and run them, protect credentials, schedule cleanup, and prove what happened. MCP helps AI applications discover and invoke capabilities—including resources, prompts, Apps, progress, logs, and experimental Tasks. LEMC handles the operating work around those capabilities.
Versioning
Where teams get stuck
One host refreshes its MCP capability list, another keeps an older one, and nobody can easily prove which implementation handled a particular run.
How LEMC solves it
A versioned cookbook points at managed, digest-pinned images. Every job records the exact computation that was selected.
The result: browsers and agent loops converge on the same release.
Contribution
Where teams get stuck
MCP makes the tool callable. The team still has to decide who reviews a local change, where it is published, and how every caller receives the approved build.
How LEMC solves it
An admin grants narrow cookbook authority; an author ships
YAML and a container through lemcli; an app owner
grants run access.
The result: contributors improve the job without inheriting platform administration.
ACLs
Where teams get stuck
MCP can authenticate a caller; the server still needs to separate people who edit the computation, publish it, or simply run it.
How LEMC solves it
Cookbook ACLs protect view and edit authority. App ACLs protect individual, shared, and admin execution on every run.
The result: give a teammate the outcome without giving them the author’s authority.
Context + proof
Where teams get stuck
Resources, prompts, tools, progress, and logs can travel through MCP while approved inputs, retention rules, artifacts, and the final receipt live somewhere else.
How LEMC solves it
The cookbook bundles the wiki, inputs, pinned steps, timing, ACL, retention rules, live events, logs, artifacts, and the terminal receipt in one governed unit.
The result: every caller receives the same events, terminal state, logs, and artifacts.
Secret delegation
Where teams get stuck
Putting a call behind MCP does not decide how its underlying token is delegated, scoped, rotated, or kept away from the teammate or agent invoking it.
How LEMC solves it
YAML carries a named reference. LEMC stores the encrypted, versioned binding server-side and redacts its exact value from logs, events, artifacts, and errors.
The result: people and agents receive the capability, never the reusable credential.
Live trust
Where teams get stuck
A server may reject new callers while an older client token, image grant, or copied MCP configuration still opens another path.
How LEMC solves it
LEMC rechecks account membership, ACLs, digest grants, runner state, and owning resources before accepting the next job.
The result: revoke once; the next browser, CLI, or API run is denied.
Execution path
Where teams get stuck
The same MCP action can sit in front of very different workload classes, image policies, runner choices, isolation, and resource limits.
How LEMC solves it
Callers select an authorized action and inputs; LEMC owns preflight, queue admission, runner choice, and isolation.
The result: an agent cannot request “run this on the host” or bypass policy.
Network authority
Where teams get stuck
Unless its implementation narrows the path, an MCP tool may see the runner host, private LAN, cloud metadata, or primary API simply because the server can.
How LEMC solves it
Hosted jobs receive narrow registry, storage, DNS, event, and permitted-egress paths while private targets remain denied.
The result: network authority becomes part of the reviewed computation.
Idempotent admission
Where teams get stuck
After a timeout, an MCP client can retry while the team still has to decide whether the first request already changed the real resource.
How LEMC solves it
Stable action IDs, idempotency keys, input validation, image authorization, ACL checks, and queue locks run before enqueue.
The result: network retries do not have to mean duplicate mutations.
Scheduling
Where teams get stuck
An experimental MCP Task can be polled or cancelled, yet the team still arranges the paired launch, recurrence, or cleanup schedule that makes the work safe.
How LEMC solves it
NOW, IN, and EVERY
jobs share the same authorization, image, isolation, event,
storage, and cleanup path.
The result: create now and destroy in 24 hours without relying on memory.
Workflow composition
Where teams get stuck
MCP callers see one action, while its step order, state transfer, timeouts, stop-on-failure rules, and final reason stay hidden in implementation code.
How LEMC solves it
Pinned container steps pass declared state, enforce timeouts, stop deterministically on failure, and share one result.
The result: authors compose the job once instead of rebuilding orchestration per client.
Durable state
Where teams get stuck
MCP Tasks can provide durable handles, polling, cancellation, terminal states, and deferred results. The team still decides which evidence must outlive the machine.
How LEMC solves it
Output, logs, artifacts, cache, private state, and terminal proof synchronize before ephemeral scratch is deleted.
The result: a later browser or agent can hydrate the result without preserving the runner.
Storage governance
Where teams get stuck
Content can come back through MCP while ownership, quotas, retention, checksums, audit history, and deletion remain separate chores.
How LEMC solves it
Durable objects carry account ownership, checksum, exact-task selection, quota, audit, and retention metadata.
The result: output becomes reviewable team evidence, not a caller’s loose file.
Runner fleet
Where teams get stuck
The endpoint responds, but its Firecracker, jailer, kernel, rootfs, runtime files, pool state, or self-tests may have drifted.
How LEMC solves it
Hosted-untrusted work is admitted only to a ready, drift-free, self-tested Firecracker runner that passed hardware validation.
The result: a runner must prove capability before it can lease hostile work.
Agent discovery
Where teams get stuck
Refreshing an MCP list finds new work, but the agent still needs a stable identity, current permission, and reviewed release before it should run anything.
How LEMC solves it
An agent can relist authorized apps and stable action IDs with
lemcli each loop, then run only what is needed.
The result: new team tooling appears without weakening the hard authorization gate.
Workspaces
Where teams get stuck
Each MCP implementation decides where files live and who can see them, so callers cannot tell what belongs to one person, the team, or the cookbook.
How LEMC solves it
LEMC distinguishes individual and shared execution, public artifacts, private state, cookbook state, cache, and task proof.
The result: the application’s data boundary is declared instead of implied.
Cleanup proof
Where teams get stuck
The MCP result arrived, but nobody knows whether its output synchronized, the guest stopped, scratch was deleted, or the queue lock was released.
How LEMC solves it
LEMC requires sync, terminal events, guest and process teardown, bounded disk growth, scratch deletion, and lock release.
The result: cleanup failure can fail the job instead of hiding behind a green exit code.
Mixed skill levels
Where teams get stuck
Even with MCP Apps, a team can end up with one human form and approval flow while automation gets different progress, errors, and results.
How LEMC solves it
Humans get wiki, forms, buttons, progress, and downloads;
experts and agents get YAML, API, JSON, and lemcli.
The result: both audiences use the same job path and receipt.
Language independence
Where teams get stuck
Separate MCP servers for Go, Python, Bash, Terraform, and vendor CLIs can each rebuild the same image, input, secret, network, output, and proof rules.
How LEMC solves it
Compose Go, Python, Bash, Terraform, security tools, or vendor CLIs while LEMC governs the surrounding execution contract.
The result: cook with the right tool without creating a second control plane.
Auditable denial
Where teams get stuck
Protocol errors are useful, but rejected elevation, invalid credentials, image grants, and runner-policy decisions can still disappear into separate MCP server logs.
How LEMC solves it
LEMC audits rejected execution, service-token, storage, registry, image, runner-policy, and cleanup decisions.
The result: mixed-trust teams can inspect both what ran and what was blocked.
LEMC does not use MCP. LEMC directly owns the layer a small team needs after standardized integration: distribution, governance, isolated execution, and durable proof. MCP could be used to reach a system that implements these things. LEMC’s advantage is that these things are the system.
Read the source trail and full comparisonYour next reliable action
Build the wiki, inputs, container steps, timing, ACL, and proof once. Then let every authorized teammate and model run the same deterministic compute.
Agent in town? Start at letemcook.dev/llms.txt