Skip to Content
Recipe CatalogOverview

Sealed Recipes

Sealed recipes are platform-owned compute primitives. Each recipe has a fixed runtime, a fixed entrypoint, and a typed payload schema. You submit payloads — Computalot handles everything else.

Use a sealed recipe when you want to evaluate, train, fuzz, or optimize against a platform-provided runtime without uploading your own code.

Use a project when you need to bring your own code, dependencies, or custom commands.

How to Use Recipes

1. Discover recipes

# List all recipes curl -sS "$BASE_URL/api/v1/recipes" -H "Authorization: Bearer $TOKEN" # Inspect one recipe's schema and operations curl -sS "$BASE_URL/api/v1/recipes/packing" -H "Authorization: Bearer $TOKEN"

2. Submit a recipe job

You can use either public submit path:

  • route-specific: POST /api/v1/recipes/:name/jobs
  • generic: POST /api/v1/jobs with "recipe": "<name>"
curl -sS "$BASE_URL/api/v1/recipes/packing/jobs" \ -X POST \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "payload": { "operation": "eval", "candidate": [0.12, 0.31, 0.88, 0.45, 0.67, 0.23, 0.91, 0.14, 0.56, 0.78, 0.33, 0.62, 0.85, 0.19, 0.44, 0.71, 0.28, 0.93, 0.16, 0.59, 0.82, 0.37, 0.65, 0.11, 0.48, 0.74, 0.26, 0.89, 0.52, 0.18, 0.69, 0.41, 0.95, 0.32, 0.76, 0.22, 0.58, 0.84, 0.13, 0.47, 0.73, 0.39, 0.66, 0.21, 0.87] }, "timeout_s": 300 }'

Generic equivalent:

curl -sS "$BASE_URL/api/v1/jobs" \ -X POST \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "recipe": "packing", "payload": { "operation": "eval", "candidate": [0.12, 0.31, 0.88, 0.45, 0.67, 0.23, 0.91, 0.14, 0.56, 0.78, 0.33, 0.62, 0.85, 0.19, 0.44, 0.71, 0.28, 0.93, 0.16, 0.59, 0.82, 0.37, 0.65, 0.11, 0.48, 0.74, 0.26, 0.89, 0.52, 0.18, 0.69, 0.41, 0.95, 0.32, 0.76, 0.22, 0.58, 0.84, 0.13, 0.47, 0.73, 0.39, 0.66, 0.21, 0.87] }, "timeout_s": 300 }'

Recipe jobs use the normal job lifecycle. You do not set type or runner_command — the recipe provides both. If a submit fails with 422, inspect GET /api/v1/recipes/:name and retry with the documented operation, payload fields, and artifact references.

3. Read results

curl -sS "$BASE_URL/api/v1/results/<job_id>" -H "Authorization: Bearer $TOKEN"

Recipe Catalog

RecipeDescriptionOperations
Prop AMMCompile and evaluate Rust strategies against the AMM evaluatoreval, validate, build, and more
Simple AMMCompile and evaluate Solidity strategies against the simple_amm evaluatorbuild, validate, eval, eval_chunk
PackingScore semicircle packing candidates against the geometry scorereval, eval_batch, feasible_optimize, and more
LightGBM TrainTrain or cross-validate LightGBM models on tabular datasetstrain, cross_validate
EchidnaSmart contract fuzzing with Echidnafoundry_prebuilt, hardhat_prebuilt

What You Control

  • Payload values (typed by the recipe’s schema)
  • Artifact IDs for supported inputs
  • timeout_s
  • requirements (optional)
  • reservation (optional)

What You Don’t Control

  • runner_command (fixed by the recipe)
  • Runtime contents and entrypoint
  • Cache policy
  • Ad-hoc dependency installation

Current Support Truth

All currently public recipes are shared CPU recipes.

  • supported_placement_policies = ["shared"]
  • default_requirements.profile = "cpu"

No current public recipe supports dedicated placement or GPU.

Artifact Inputs By Recipe

RecipeArtifact inputsPlacement / hardware
Prop AMMstrategy_refshared CPU
Simple AMMstrategy_refshared CPU
Packingcandidate_ref, candidates_refshared CPU
LightGBM Traindataset_refshared CPU
Echidnaproject_refshared CPU

API Endpoints

MethodPathPurpose
GET/api/v1/recipesList all public recipes
GET/api/v1/recipes/:nameRecipe schema and operations
POST/api/v1/recipes/:name/jobsSubmit a recipe job
GET/api/v1/docs/recipesRecipe documentation
Last updated on