How we use AI
Ettin was built by one person who had never designed a circuit, and by two AI coding agents that have never touched one. This page describes how that works, because the posts on this site mention the agents by name. The rules the work is done under, and why, are on the AI guidelines page.
Who they are
The agents are Claude Code sessions, running in the project’s repository on two machines.
The main PC, where KiCad lives, is called Skald. It does schematic checks, board-file scripting, panel generation, review and fab packages.
The Arch Linux laptop at the bench is called Huginn. It does firmware builds, serial logging and bring-up procedures. They basically operate with the same instructions. The names exist mostly for convinience and tooling. Agents tag their work so I who was doing what during our work sessions when reviewing Linear.
What they do
Read the repository, the datasheets and the bench logs, and keep the documents of record current. Write procedures before a bench session and read the serial stream during it, so my eyes stay on the board.
Extract a netlist from a board file and check it against the schematic.
Write and run scripts against KiCad files: the panel generator that reads hole positions from the board, the ground-current model, the via stitcher, the fab package builder with its gates.
Build review packages.
Draft the posts on this site from the repository’s own documents, with every number cited to a file.
The audit that killed Rev 1 was agent work. On 9 June 2026 the board was “ready to order”, and an agent reading the netlist out of the board file, rather than me reading the schematic I had drawn, found the nine faults that would have destroyed the processor at power-on (nine ways Rev 1 would have died).
That is the single most valuable thing an agent has done on this project, and it is the reason the project has a process at all.
What they do not do
They do not make design decisions. Every decision in the plan files is marked with who made it and when, and the ones that matter are marked “Pat”.
They do not touch the KiCad GUI. They edit a board file only by script, only when I have agreed, only by replacing the specific blocks that change, and they write a backup first. They do not move a tracker issue past the External Review gate; They do not order parts or boards. They do not solder, and they cannot see the bench: everything they know about a physical board comes from what I type and what the serial port prints.
Two labels in the tracker carry the boundary. needs-pat means an
issue is blocked on a decision only I can make, and the agent has to
name the blocker. agent-ok means work it without asking. With
neither, the agent proposes and I decide.
In the end
The circuit decisions, the soldering, the listening and every mistake in the posts are mine. The agents made the process possible: the netlist checks, the generated panel, the gated fab package and the documentation discipline that lets a failure on a Tuesday become a rule by Wednesday. The posts say “an agent” or use a name wherever that is true, in the same voice as everything else, because the record is the point.