Local-first UI companion for ClawRecipes (OpenClaw Recipes plugin).
- OpenClaw installed and on PATH (
openclaw) - ClawRecipes plugin installed/linked so
openclaw recipes ...works
ClawKitchen can be loaded as an OpenClaw plugin so it runs locally on the orchestrator.
Recommended (end users): install the published plugin package (ships with a prebuilt .next/ so you don’t run any npm commands).
openclaw plugins install @jiggai/kitchen
# If you use a plugin allowlist (plugins.allow), you must explicitly trust it:
openclaw config get plugins.allow --json
# then add "kitchen" (and "recipes") and set it back, e.g.
openclaw config set plugins.allow --json '["memory-core","telegram","recipes","kitchen"]'Edit your OpenClaw config (~/.openclaw/openclaw.json) and add:
{
"plugins": {
// If you use plugins.allow, ensure kitchen is allowed.
"allow": ["kitchen", "recipes"],
"entries": {
"kitchen": {
"enabled": true,
"config": {
"enabled": true,
"dev": false,
"host": "127.0.0.1",
"port": 7777,
"authToken": ""
}
}
}
}
}Notes:
- Plugin id is
kitchen(fromopenclaw.plugin.json). - If
plugins.allowis present, it must includekitchenor config validation will fail.
Config changes require a gateway restart:
openclaw gateway restartopenclaw kitchen status
openclaw kitchen openThen open:
This is intended for Tailscale-only remote access.
Use a long random string. Examples:
# base64 token
openssl rand -base64 32
# hex token
openssl rand -hex 32
# node (URL-safe)
node -e "console.log(require('crypto').randomBytes(32).toString('base64url'))"Update OpenClaw config:
{
"plugins": {
"entries": {
"kitchen": {
"enabled": true,
"config": {
"host": "<tailscale-ip>",
"port": 7777,
"authToken": "<token>",
"dev": false
}
}
}
}
}Restart:
openclaw gateway restartOpen in a browser:
http://<tailscale-ip>:7777
Authentication:
- HTTP Basic Auth
- username:
kitchen - password:
<token>
- username:
Safety rule:
- If
hostis not localhost,authTokenis required.
See docs/GOALS.md.
- This app shells out to
openclawon the same machine (local-first by design). - Phase 2 will add marketplace/search/publish flows.
Kitchen runs in-process with the OpenClaw Gateway. The supported way to stop it is to disable the plugin and restart the gateway:
openclaw plugins disable kitchen
openclaw gateway restart(You can re-enable it later with openclaw plugins enable kitchen and another gateway restart.)
If you see 500s when loading Next static chunk files (for example /_next/static/chunks/<hash>.js), it usually means Kitchen is running with dev: false but the local .next/ build output is missing or out of date.
Fix:
cd /home/control/clawkitchen
npm install
npm run build
openclaw gateway restartThen hard refresh the browser.