A CNC mill cutting aluminium alone in a dark workshop, lit by its work light.

N° 05For fabrication

The shop that runs with the lights off.

Mills, lasers and printers stream into a digital twin. Agents run the jobs you grant them. Every command is written down before it reaches the machine.

Plate 05 · A three-axis mill after hours, lit only by its own work light

One model

Every machine is a device with channels.

A mill, a laser, a printer and the camera watching them are the same kind of thing in CommandAGI: a device with channels — a G-code line, a status feed, a video stream. You place them as units in a world that matches your floor.

Drivers speak each controller's own protocol, through one session interface:

  • CNC: GRBL 1.1 over USB, FluidNC and grblHAL over TCP, Smoothieware, LinuxCNC 2.9.
  • Printers: Marlin, Klipper through Moonraker, PrusaLink, OctoPrint, Duet / RepRapFirmware, Repetier-Server.
  • Lasers: the laser verbs of GRBL, Smoothieware, Klipper and Duet, with nesting and sheet G-code in the vector app.
A 3D printer at work beside a monitor glowing with its digital twin.

Plate 06 · The twin beside the machine it follows

The twin follows the machine, not the plan.

The digital twin draws what the controller reports — position, line, feed, alarms — and marks every deviation over half a millimetre. Simulated and live are labelled, and they never mix.

Written down before it is sent.

Every action is appended to the run's stream, with the principal that sent it, before the driver is called. An acknowledgement is not a position. A lost link is recorded as state unknown — and nothing is ever silently retried.

If an agent decides to try again, that decision is its own recorded command.

runs/night-shift/streams/mill-1.gcodeexample records
02:14:07.180 note    agent:night-shift: run_program bracket-v3.gcode
02:14:07.192 command G21 G90
02:14:07.204 ack     ok
02:14:07.260 command G1 X112.4 Y38.05 F1200
02:14:07.274 ack     ok
02:14:09.910 state   state: unknown  (link lost)
02:14:12.330 event   link back · Idle
02:14:12.402 note    agent:night-shift: send_command $H

Authority

Authority is a standing grant.

You decide once what an agent may touch: which world, which units, which channels, which verbs, for how long. Inside that grant it arms the machine, runs programs and sends commands in real time — no confirmation dialog at 2 a.m.

The driver enforces the bounds, not a person. Stop, hold and emergency verbs are always allowed to anyone with any grant on the unit.

shell
commandagi grant add --principal agent:night-shift \
  --world shop --unit mill-1 --channel gcode \
  --verb open --verb arm --verb run --for 8h --note "night shift"
A small camera clamped to a CNC gantry, watching the cut.

Cameras

Cameras are channels, too.

A USB camera, a screen or an ESP32-CAM is one more channel on a unit. Its video is recorded into the same run as the G-code, on the same clock, so a replay shows what the machine was told and what it did.

The camera-wall dashboard puts every recorded stream on one screen.

Plate 07 · A camera clamped to the gantry, looking down the cut

Counted, not projected.

What is in the product today, by the numbers in the repository.

26
Drivers in the catalog

CNC, printers, servo buses, cameras, shells and more — one session interface.

4
Verbs a grant can give

open, arm, run and send. Stop is never withheld.

5min
Until arming lapses

An armed session that sits idle disarms itself.

0
Silent retries

A physical command is sent once. Retrying is a decision, and it is recorded.

Verification

We say exactly how far it has been tested.

Each driver carries one word for what it has been verified against: none, loopback, bench or hardware. Today the fabrication drivers say loopback — tested against faithful software fakes of each protocol. No machine has been commissioned yet.

When a driver runs on a real mill on a real bench, it will say bench. Not before.

Bring your machines.

Open the workbench in your browser, place your machines in a simulation world, and run the job there first.