Skip to content

Latest commit

 

History

696 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Horn Tip Blindcap: Duel 2030 San Francisco Chess Set
Trotter Solar system with engraved orbits 1:16 Formula 1 car

Autonomous Workshop

Create your own autonomous AI Inventor. Shape its Taste, give it direction, and let it dream up and develop original toys and games for people to buy.

Autonomous Workshop is the engine behind this vision: anyone can build a toy studio around their own Inventors. The creator shapes taste and direction. The Inventor researches, invents, and makes. Autonomous brings the toys to the shop, with physical production, shipping, and customer support owned by Operations.

Our first category is toys and games. Our focus is autonomous Inventors that people create and direct. Conversation is the main creative interface; individual toy briefs and CAD edits support that relationship.

The Autonomous Workshop loop: Daydream, Invent (optional), Make, Playtest (optional), Release, Shop, Scoreboard

The creator experience

The planned Manage Inventors page gives each creator a collection of Inventors. Click Add Inventor, start a conversation about the toys you want to put into the world, and develop a recognizable creative point of view together. Each Inventor has one persistent workspace:

  • Chat: give direction, explore ideas, discuss a particular toy, and hear about meaningful progress and customer feedback.
  • Taste: an editable TASTE.md that captures what the Inventor loves, rejects, and aims to make unmistakably its own. Clear lasting preferences from conversation become visible, versioned updates with undo; a request about one toy stays with that toy.
  • Inventions: the Inventor's toy library, including ideas, work in progress, released products, revision history, units sold, and buyer ratings with review counts. A new revision can be in development while an earlier revision remains on sale.

Creators can have multiple Inventors with different tastes. Each works within explicit operating limits and publishing permissions. Creators return to see what their Inventors have made, learn from the results, and shape their next direction.

How we are opening the Workshop

  1. Be the first creators. We create and operate the initial Inventors ourselves, testing the same tools and product journey we intend to offer others.
  2. Invite creators. A small group establishes its own Inventors and toy studios, helping us prove that distinctive toys and dependable fulfillment can work beyond our own team.
  3. Open creation to everyone. Anyone can create and direct Inventors; shared quality requirements and operating controls apply as the community grows.

Our initial Inventors seed the shop and exercise the system. The long-term platform brings together many creators, their autonomous Inventors, and people who want to buy their toys.

What works today and what comes next

  • Available in the CLI: workshop create inventor --taste ./TASTE.md creates a specialist bundle from your exact Taste and connects its publishing account. workshop start <inventor> repeatedly dreams, builds, and attempts publication until stopped or its failure limit is reached. workshop daydream <inventor> lets you inspect an idea before building it. See the Quickstart and Build an Inventor.
  • Implemented production boundary: Spark uses Workshop inventor selection → Make → Publish. Make owns its product checks; Workshop publishes its existing files without another CAD rebuild, review, PDF-generation step, or native Release turn. Forge and Quest retain their deeper stage contracts. Authenticated readback is required for publication; Operations owns physical production, hands-on checks, shipping, and customer support afterward.
  • Planned creator workspace: the hosted Manage Inventors page, persistent creator chat, conversation-driven Taste revisions, and invention performance views described above.
  • Planned learning loop: creator feedback and actual product outcomes inform future work. Today's notebook remembers previous ideas to avoid repetition; sales, playtests, and customer reviews do not yet flow back into it. Outcome feedback should improve an Inventor's judgment while preserving the creator's control over its Taste.

Internally, the sealed brief that begins one product run is still called a Wish. Existing Wish commands and frozen run contracts remain part of the engine; the consumer experience centers on creating and directing an Inventor.

Correct a published toy

Clone a published toy archive into a separate Spark run using a correction brief:

uv run workshop fix toys/mara-masque-rainward-sun \
  --prompt-file docs/examples/rainward-sun-fix.txt

Use --prompt "Describe the correction" for a short brief. The command keeps the original Inventor, creates a new Wish and editable copy, and runs Make and publication with fresh evidence. The original run and listing stay unchanged. The source must be a local Workshop public archive with its MANIFEST.json; URLs and private run directories are not accepted. --model, --effort, --max-tokens and --turn-minutes select the new run's settings. Resume a stopped revision with workshop resume <new-wish-id>.

The Rainward Sun prompt above is a prepared example. The correction path itself is live-validated: Rainward Flow and Rainward Lowflow were published from the Rainward Sun archive, each as an independent run. See the correction-run contract.

Quickstart

git clone https://github.com/autonomous-ai/autonomous-workshop.git
cd autonomous-workshop

codex login
uv run workshop doctor

When an Inventor is not yet connected, Workshop opens Connect Inventor during create or start. Choose the Autonomous account that should publish this Inventor's toys, then approve the connection. Workshop continues in the terminal; if the browser does not open, follow the URL it prints.

Each Inventor has its own owner-only credential file under $WORKSHOP_HOME/credentials/inventors/. The browser returns only a short-lived, one-time authorization code; Workshop exchanges it directly with the Autonomous Toys API. Publishing credentials never enter a browser URL, product workspace, or coding-agent session. To choose a different account later, run uv run workshop login <inventor-id>.

One command runs the whole loop, and keeps running it. Pico Press daydreams one fresh idea that fits its Taste, the host rejects anything too close to a toy already made, the survivor is sealed as the brief, the run makes and publishes it (✨ Spark, Make -> Release, with Codex as the Workshop Manager; the idea is already the concept), and then Pico Press dreams the next one:

uv run workshop start pico-press

It runs until you stop it: Ctrl-C, or from another terminal:

uv run workshop stop pico-press          # ends after the current step
uv run workshop stop pico-press --now    # interrupts now; the current run stays resumable

Three consecutive failed daydreams or builds stop the loop on their own. --once dreams and builds a single idea; --max-ideas N stops after N. --workflow goes deeper: 🔥 Forge adds Invent (Invent -> Make -> Release), 🗺️ Quest adds Invent and Playtest:

uv run workshop start pico-press --workflow forge

Want to see an idea before building? workshop daydream pico-press prints the card and stops. Build a saved idea later with workshop start pico-press --idea <daydream-id>.

To make just one product from your own idea, use wish:

uv run workshop wish "A small hand-cranked cam toy" --inventor soren-voss \
  --workflow spark --agent codex --model sol --effort high

Motion verification is optional for new runs. workshop wish "a moving toy" skips motion checks and required animation review by default. Add --check-motion true to enable them; workshop start and workshop fix accept the same option. workshop resume <wish-id> also defaults to false, including older Wishes and runs that previously enabled motion. Pass --check-motion true on resume to enable it again. Skipped motion is unverified; build, print and still-image review checks remain in place.

start <inventor> is the ongoing Inventor-led loop; wish "..." creates one product and stops. Omit --inventor on a Wish to let the Manager choose the best match. start <inventor> --once dreams and builds one Inventor-generated idea. resume <wish-id> continues the same unfinished product and session.

For new Spark runs, Workshop selects the inventor before starting Make. An explicit --inventor binds your choice immediately; otherwise the Manager selects from the roster and continues into Make in the same native session. Publish uses the existing Make files and optional existing README. It does not require a newly authored manual. The lifecycle still calls this final host-owned publication checkpoint release; omitted reviews are recorded as not run. The new direct-publication path passes deterministic end-to-end tests; live acceptance is still in progress.

start <inventor> --wish "..." builds your own brief as that Inventor without a daydream: the Inventor id is sealed into the Wish, so the run materializes only that Inventor, Match can bind nobody else, and Release publishes with that Inventor's account. --ref attaches up to eight reference images (PNG, JPEG, or WebP) to a wish or a start --wish, each a local file or an http(s) link that is downloaded once at Wish time and sealed by its bytes; --max-rounds sets the legacy Invent-Make round budget (not a spending limit for token-budgeted products):

uv run workshop start ferro-line --workflow forge --max-rounds 6 \
  --ref duck.webp --ref https://example.com/duck-side.png \
  --wish "a wind-up robot duck that walks when you turn its key"

--agent chooses the Workshop Manager runtime; --model and --effort choose its model and reasoning level. Those choices apply to both the daydream and product run and are frozen for resume. Codex defaults to Astra at medium effort; Claude Code defaults to Opus 5 at medium effort. Friendly Codex aliases such as astra and sol resolve to exact model ids. Grok's first ✨ Spark run, from a typed brief, produced Horn Tip:

grok login
uv run workshop start pico-press --agent grok --workflow spark

# Or run Codex Astra at high reasoning effort:
uv run workshop start pico-press --agent codex --model astra --effort high

Every run prints a run ID (a Wish ID). Check on it or continue the same session:

uv run workshop status <wish-id>
uv run workshop resume <wish-id>

Codex Astra also supports --effort ultra, passed unchanged to native Codex. Ultra is restricted to Astra; other models retain their existing effort levels.

start and wish accept --max-tokens N up to 200,000,000, default 30,000,000 per Codex product. Input plus output is counted across all enabled build steps, native children, retries, and resumes. Cached input counts and is reported separately; reasoning output is already part of output. start gives each product its own allowance; the separate Daydream session is outside this build budget.

uv run workshop wish "A simple one-piece gravity desk rocker" --inventor soren-voss \
  --workflow spark --agent codex --model astra --effort medium --max-tokens 10000000
uv run workshop resume <wish-id> --max-tokens 15000000  # total cap, not extra tokens

wish, start and resume also accept --turn-minutes M, which bounds each native turn to M minutes (1 to 360), or --turn-minutes none to run with no Workshop wall clock at all. It replaces every frozen stage default and every host-side clamp, including a budgeted run's remaining step clock. Omitting it keeps the run's frozen boundary exactly, so nothing changes for a run that does not ask. On resume it re-selects the boundary of an unfinished run without touching its stage, artifacts or history — the way to rescue a run that keeps timing out instead of restarting it. An untimed run still needs the Manager's own bound, which today means a Codex token budget: Codex refuses to run untimed without one, while Claude Code and Grok Build have no token budget and an untimed turn there is bounded by nothing Workshop owns. See ADR 0064.

Omitting --max-tokens on resume preserves the saved allowance. Providing it explicitly adopts token budgeting for an eligible older run or changes its total cap, retaining recovered prior usage. Token-budgeted runs no longer split on a wall-clock timer. Tokens are their only Workshop execution budget: no host turn, proposal-retry, or lifecycle-round cap. Make retains its own engineering checks and review allowance (four reviews in current tools). Safety boundaries remain. Native usage is observed after requests, so in-flight work can overshoot the threshold. Missing usage is not free work. This is not a dollar cap. The local usage adapter currently requires Codex 0.153.4; other Managers retain their existing policy. Live acceptance passed for Quiet Arc: Spark / Codex / Astra / medium / Soren, including same-session recovery and verified publication, used 6,893,962 observed tokens of the 10M allowance. On 2026-09-10, Civic Skyline completed live Spark host-only publication under Dee with 32,678,604 observed tokens of its unchanged 200M cap. Recovery repaired Factory's carrier-root selection through a new version of the same private draft; it reused Make's files without another Make run, native Release turn, PDF, or CAD verification. This frozen run retained its earlier inventor selection; the new selection-before-Make boundary is separately covered by deterministic tests. These results prove digital publication, not physical manufacture or every live parameter combination.

Long turns remain attached to the same session if the locally installed Codex CLI receives a supported in-place update. Workshop still rejects downgrades, major-version changes, and same-version policy drift. Timeouts and exact recognized provider disconnects resume that same session; unknown failed turns still stop safely for an explicit operator resume. A terminal failure reports and privately records a bounded cause category, recognized signature, safe provider code, and message size without retaining the provider's free-form error text.

Workshop Managers

One run is one native coding-agent session — the shop lead. Resume cannot switch Managers.

uv run workshop start pico-press --agent codex    # Sol + medium; default
uv run workshop start pico-press --agent claude   # Opus 5 + medium; experimental
uv run workshop start pico-press --agent grok     # experimental
Manager CLI Status
Codex codex Default. Omit --agent.
Claude Code claude Experimental.
Grok Build grok Experimental. Spark E2E: Horn Tip, Knockseed.

Inventors

Each Inventor expresses a specialist point of view. Several can make the same kind of toy in their own way. The bundled Inventors are our first studios and public examples; creators can already add their own through the CLI. The hosted creation and management experience is planned.

An Inventor is a declared specialist bundle: TASTE.md for creative judgment, inventor.json for identity and skill hashes, and a required <id>-inventor skill. Optional extra Inventor-prefixed skills may hold scripts, references, or tested deterministic tools. For a run, .codex/agents/*.toml is the sole roster. Inventor code cannot launch agents, choose stages, pass gates, or perform authenticated effects.

uv run workshop create inventor \
  --taste ./TASTE.md

The file must be named TASTE.md. Workshop preserves its exact bytes, derives the Inventor id from the frontmatter name, creates the required specialist skill, and validates the bundle.

---
name: Ada
description: Choose Ada for hand-cranked creatures; not static models or games.
---

# Ada's taste

I love mechanisms whose motion tells the story. I reject decoration without play.

Read Build an Inventor for the specialist contract.

Alice — reinvent the classics (TASTE.md)

Chess, go, dominoes, puzzles — games everyone already knows, made into a set that is yours. Alice never touches the rules. She changes what the pieces are, so the set is about you.

2030 San Francisco Chess Set 2030 San Francisco Chess Set

Leo — invent games that don't exist yet (TASTE.md)

Brand new games, invented for one wish: new rules, new pieces, a new reason to sit at a table. Quest effort exercises those rules with seeded Playtest evidence; Spark and Forge truthfully release without claiming that testing occurred.

Blindcap.Duel.mp4

Blindcap: Duel — a two-player hidden-information strategy game of mushrooms, probes, and crowns

Bob — invent machines that move (TASTE.md)

Things that do one delightful thing when you wind them up, let them go, or drop something in. No motors, no batteries, no electronics — the movement has to come out of the shape itself.

Trotter.mp4

Trotter — a palm-size, rubber-band-powered quadruped

Ivy — invent science toys you can hold (TASTE.md)

The planets, a swinging pendulum, a shape that looks impossible — real science, small enough to pick up. Ivy says where her numbers came from and what she left out, because here being wrong is worse than being boring.

A solar system with its orbits engraved A solar system with its orbits engraved — $59.99

Eve — invent little worlds (TASTE.md)

Your dog, your bike, your desk, your homelab — turned into a small world you can put on a shelf. Eve's only counts if it could not have existed before your wish.

A 1:16 Formula 1 car A 1:16 Formula 1 car

Sonora Reed — sculpt sound from geometry (TASTE.md)

Passive acoustic toys whose playable voices come from visible printed ridges, chambers, tracks, and resonant bodies—never electronics or decorative claims.

Vela Bloom — make small shapes transform (TASTE.md)

Compact rigid-link toys that deploy, iris, unfurl, or blossom through one legible, collision-aware transformation with deliberate end states.

Kestrel Knot — make continuity feel impossible (TASTE.md)

Topology-driven captive-motion toys built from open loops, crossings, braids, and continuous routes whose geometry and clearances can be checked exactly.

Orin Shadow — make geometry tell a second story (TASTE.md)

Mechanical shadow-play toys whose held form casts a hidden creature, place, or event under ordinary light. Orin authors the solid object, its negative space, and its hand-powered projected transformation as one printable mechanism.

Halden Detent — make the hand something worth repeating (TASTE.md)

Fidget instruments for a working desk: one weighted, quiet, endlessly repeatable loop — a detent click, a glide, a rocking mass — that a hand runs without looking while the eyes stay on the work, and that sits still and deliberate beside a laptop once it is put down.

Axel Rake — design the vehicle that comes next (TASTE.md)

Original present-day and future cars and motorcycles, designed package-first — wheelbase, rider or occupant, and battery or engine placed before any surface — then built as rolling, part-split printable scale models on one family scale, with every speculative future technology labelled in a ledger.

Toys

Toys that already left the Workshop. After Factory publication, a sanitized snapshot lands in toys/<inventor>-<slug>/. These are public examples, not private run workspaces.

Horn Tip

Toy Inventor Effort Snapshot Factory
RIDGELINE — Great Wall Path Puzzle Arden Span Operator revision toys/arden-span-ridgeline-great-wall-path-puzzle/ ridgeline-great-wall-path-puzzle
QUAYSHIFT Arden Span ✨ Spark toys/arden-span-quayshift/ quayshift
Moonwake Turn Luma Vale Spark toys/luma-vale-moonwake-turn/ moonwake-turn
Mooncoil Dragon Pico Press Spark toys/pico-press-mooncoil-dragon/ mooncoil-dragon
Pocket Eclipse Menagerie Orin Shadow Spark toys/orin-shadow-pocket-eclipse-menagerie/ pocket-eclipse-menagerie
Starling Gate Pico Press Spark toys/pico-press-starling-gate/ starling-gate
Moonchase Fox Pico Press Spark toys/pico-press-moonchase-fox/ moonchase-fox
Storm Reveal Mira Fold ✨ Spark toys/mira-fold-storm-reveal/ storm-reveal
Saigon Skyline Chess Alice ✨ Spark toys/alice-saigon-skyline-chess/ saigon-skyline-chess
Rainspell Dial Sonora Reed 🔥 Forge toys/sonora-reed-rainspell-dial-three-field-sound-garden/ rainspell-dial-three-field-sound-garden
Eclipse Braid Kestrel Knot ✨ Spark toys/kestrel-knot-eclipse-braid/ eclipse-braid
Moonwake Garden Luma Vale 🗺️ Quest toys/luma-vale-moonwake-garden/ moonwake-garden
Knockseed Pico Press ✨ Spark toys/pico-press-knockseed/ knockseed
Horn Tip Pico Press ✨ Spark toys/pico-press-horn-tip/ horn-tip
Quiet Arc Soren Voss ✨ Spark toys/soren-voss-quiet-arc/ quiet-arc
Lunar Relay Bob ✨ Spark toys/bob-lunar-relay/ lunar-relay
Orbit Gobbler Bob 🔥 Forge toys/bob-orbit-gobbler/ orbit-gobbler
Comet Heist Leo 🗺️ Quest toys/leo-comet-heist-twin-pulse-vault-run/ comet-heist-twin-pulse-vault-run
Cradle Crescent Bob toys/bob-cradle-crescent/ cradle-crescent
False Lantern Leo toys/leo-false-lantern/ false-lantern

Horn Tip and Knockseed are Spark runs on Grok. A later run with the same brief is the same route, not a replay of those CAD bytes. Cradle Crescent and False Lantern are older snapshots.

Private runs live outside Git at $WORKSHOP_HOME/runs/<wish-id>/workspace. New toy READMEs report best-effort gross, cached, and uncached Manager input plus output and reasoning-output tokens by stage, alongside elapsed time from run intake through authenticated Factory public readback. This is telemetry, never a gate, and no dollar estimate is inferred. See toys/README.md for what a snapshot includes and docs/QUALITY_ECONOMICS.md for the paired quality and cost benchmark.

Forge and Quest now make the cheapest exact mechanism/form falsifier the first persisted Make deliverable under <cad-project>/review/early-proof/, before the complete part tree. Native Make iteration uses source-fresh print-preflight without destructive cache cleanup; the trusted isolated host alone performs the authoritative fresh rebuild before Made can advance. The v9 proof uses one shared helper and three exact state entries that each expose one module-scope gen_step(), and the host supplies exact $WORKSHOP_PYTHON-prefixed generate, export, and render commands so Make does not spend its bounded proof phase rediscovering package entrypoints. New deep runs bind a private run-local cache, defer the broad CAD skill until final Make, batch all mandatory proof reads, author source as the next durable action, and execute proof commands as one foreground batch. A fixed-camera --state-sheet renders the three exact state STLs and rejects visually indistinguishable frames; rotating one unchanged mesh is only viewpoint evidence. The root performs the cheap early direction check; the independent blind critic remains at the final hash-bound Make review.

Architecture

The floorplan of the shop. An Inventor's idea walks one frozen route; Operations takes the sealed Release and the shop sells it.

A peek inside the Autonomous Workshop: a pluggable coding-agent runtime follows a selectable Spark, Forge, or Quest route before handing the released toy to Operations

Daydream -> one liked idea -> a frozen effort route:

✨ Spark: Make -> Release                          (default)
🔥 Forge: Invent <-> Make -> Release
🗺️ Quest: Invent <-> Make <-> Playtest -> Release

Release -> Shop (order one, printed to order, photographed, ships in days)
Shop -> Scoreboard (views, orders, prints, returns) -> back to Daydream

Route diagrams: Spark · Forge · Quest.

Every run is keyed by a Wish id. Passed-through stages create no turn, artifact, gate, or evidence; Spark and Forge record Playtest as not-run. The reverse arrows are evidence-bound repair routes recorded in shared revision history; token-budget runs spend the persistent token allowance instead of a host revision-count allowance.

Who does what. The selected Workshop Manager does the product work in one persistent native session, one Goal at a time. Creative stages use native Goals and run-local finalizers; Workshop inventor setup and Spark's host-only Publish are not additional Goals. The Python host is narrow and trusted: identity, exact bytes, lifecycle order, budgets, session start and resume, deterministic gates, credential isolation, and authorized effects. There is no second agent framework, prompt chain, or reward loop.

Two sessions, by design. workshop start is a loop: dream, build, dream again. A daydream is its own short native session. It ends when the idea is sealed: linted, hashed, written to the Inventor's notebook, and rendered as the brief. Each liked idea then gets its own persistent build session, one per run, exactly as a typed brief would. The idea is an immutable input to the build, so Make can never quietly rewrite what it is building; daydreams can run on their own cadence; a saved idea can be built later, on any route or Manager, or rebuilt after a failed Make; and a build failure never touches the idea.

What Make must prove. Every printable part passes a fixed print preflight (bed fit, mesh validity, wall thickness at a 0.4 mm nozzle). Make records native visual feedback and an independent critic reviews exact renders blind before the brief is revealed; current Make permits up to four reviews. Make then runs its integrated verifier. Spark accepts those output bytes without another host rebuild; Forge/Quest retain isolated host verification. When a stage is truly blocked, it records a Need: that the receipt and workshop status show; nothing waits silently.

What Release means. Spark publishes Make's existing files with exact metadata-anchor readback and requires no new PDF or review. Forge/Quest's PDF-first Release contracts retain three facts about the same exact bytes:

  • full-tier, thickness-checked, ready-to-print CAD
  • a self-contained printable MANUAL.pdf for the box
  • authenticated public Factory readback of those CAD and manual hashes

For those PDF-first contracts, a multi-part toy crosses to the shop as one mesh per sealed occurrence in the colours Make sealed. The host can render the sealed assembly with a pinned three.js renderer (tools/render/, optional; see workshop doctor). Spark instead transports Make's complete existing tree without new renders. The build session stays private; no transcript ships with the listing.

Workshop code ends there. Printing, delivery, and Review belong to Operations. Publication does not claim a physical print, pack, or delivery.

inventors/          reusable Inventor sources (Taste, skills, tools)
toys/               sanitized public snapshots after Factory readback
.agents/product-run complete template copied into every new toy project
src/cli/            command parsing, presentation, exit codes
src/workshop/       trusted host: daydream, stages, workflow, runtime, gates, effects
tests/              component-mirrored deterministic suite
docs/               architecture, ADRs, and contributor guides

Private state stays outside the agent-visible checkout: $WORKSHOP_HOME/daydreams/<inventor>/, $WORKSHOP_HOME/runs/<wish-id>/workspace, and $WORKSHOP_HOME/state/<wish-id>/. Factory credentials live in $WORKSHOP_HOME/credentials/inventors/<inventor-id>.env (0600 inside a 0700 directory) and never enter the native agent's session.

Turn budgets, compaction ceilings, recovery windows, and the blind-review protocol are specified in Native coding-agent runtime. See also Workshop architecture, the publication boundary, and Playtest evidence.

Contributing

This is the shop floor for Workshop code and Inventor sources. To change the CLI, runtime, workflow, or product-run protocol, follow CONTRIBUTING.md. To add a specialist, start from Build an Inventor.

uv run workshop doctor
PYTHONPATH=src python -m unittest discover -s tests -t . -p 'test_*.py'

Never commit credentials, runtime databases, private keys, generated backups, or someone else's source without written permission and a record of where it came from.

Licensed under Apache-2.0.

About

Autonomous AI inventors that daydream, invent, and make new toys and games around the clock.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages