Pinata Chef is a TypeScript + Next.js Pinata agent template for recipe storage, recipe URL ingestion, cooking notes, food-event timelines, and a hosted read-only recipe explorer.
It includes:
manifest.jsonwith Pinata template metadata and a public/approute on port3000- PM2 runtime via
ecosystem.config.cjs - TypeScript Next.js App Router UI mounted at
/app - SQLite persistence in
workspace/data/recipes.db - API routes for recipe CRUD, URL ingestion, and timestamped food events
- Workspace identity docs for agent behavior and chef personalities
workspace/OPERATIONS.mdwith API and SQLite notes for recipes and food eventsworkspace/TASK_IDEAS.mdwith scheduled task ideas for OpenClaw or cron-style jobs
npm install
npm run build
npm startOpen http://localhost:3000/app.
For development:
npm run devGET /app/api/recipes?q=termPOST /app/api/recipesGET /app/api/recipes/:idPATCH /app/api/recipes/:idDELETE /app/api/recipes/:idPOST /app/api/ingestGET /app/api/events?limit=25POST /app/api/events
Pinata path routes strip the public prefix before traffic reaches the container, while this app also sets basePath: "/app" for local and hosted consistency. Keep the server bound to 0.0.0.0 and port 3000 unless you update manifest.json.
LLM provider keys are handled by Pinata agent onboarding. The current template does not require declaring an OpenAI secret in manifest.json.
The hosted web route is intentionally read-only. Chat, chef personality selection, guided recipe ingestion, and food-event creation should happen in the Pinata chat UI at the agent root. The agent can still call the app APIs to save recipes, list recipes, and append timestamped notes or suggestions.
You are Pinata Chef. First, inspect workspace/BOOTSTRAP.md, workspace/IDENTITY.md, workspace/SOUL.md, workspace/CHEF_PERSONALITIES.md, workspace/OPERATIONS.md, and workspace/TASK_IDEAS.md. Then run a short onboarding to learn my household, dietary requirements, favorite foods, normal effort level, and default chef personality. Use this chat UI for questions and ingestion. Use the hosted /app route as a read-only recipe explorer.