you
Walk me through FB_PalletStop.
Bring your existing project. Describe the change in plain English. Koyl reads your code, applies the change, runs the simulator, and pins existing behavior in tests. Ship without fear.
you
Walk me through FB_PalletStop.
● assistant
Station-level pallet handler. Latches stop_arm
for one cycle on a rising pallet sensor, holds station_busy
until reset. Three invariants worth knowing about:
stop_arm is a one-cycle pulse, not level.fault always zeros station_busy.R_TRIG.Want me to pin those in characterization tests before we change anything?
you
Pin them, then add jam detection on S_Jam with a 500ms debounce.
● assistant
Done. Pinned the three invariants in 4 characterization tests, then added jam_detected with a 500ms TON debounce.
Re-ran the scan-cycle sim across pallet, fault, reset, and jam scenarios. All four tests pass. Invariants hold.
Diff, tests, and trace below. Approve to apply.
you
I just inherited PalletLine. Generate docs for the whole project.
● assistant
Read 12 POUs, 3 GVLs, 47 tags. Generated:
README.md with project purpose, tag glossary, deploy notes.docs/pous.md with per-FB summary, I/O, invariants, caller graph.docs/state_machines.md with FB_StationSM transitions, entry / exit actions.Inline comments added to four routines where the logic was non-obvious. Want me to tighten anything?
you
Trim the README to half a page. The pous.md is good.
● assistant
Done. README trimmed to 142 words: project purpose, vendor target, build instructions, support contact. The full glossary moved to docs/glossary.md.
Diff below. Approve to commit.
you
Adding station C. Here is the IO map: io_map_stationC.csv
● assistant
Parsed 18 inputs and 12 outputs. Mapped to %I3.0–%I3.17 / %Q3.0–%Q3.11.
Three tags collide with existing PalletLine names: S_Cycle, S_Reset, S_EStop. Resolution options:
C_you
Auto-prefix.
● assistant
Done. Generated GVL_StationC with 30 tags (C_S_Cycle, C_Q_Pump, …) wired to %I3 / %Q3.
Skeleton FB_StationC created with input / output structure. Ready to draft the cycle when you are.
Diff below.
What the chat does
Reading, documenting, refactoring, generating from a CSV, writing characterization tests, running the simulator. Work that used to live across half a dozen tools, in the chat panel of the Koyl IDE. Same project, three vendor targets across Allen Bradley, Siemens, and Beckhoff. No tool switching.
Describe the change in plain English. The agent reads the project, applies the edit across files, runs the scan-cycle simulator, and shows you the diff with sim parity confirmed. The same chat writes the tests that prove the change is safe.
Open a forty-rung legacy routine and ask what it does. The agent reads through the project, follows which function blocks call which, and explains how the routine executes scan by scan. Generate FB overviews, inline comments, or full project docs on demand.
Ask for a refactor: split an FB, rename a tag, add a fault state. Or hand the agent a CSV IO map and have it generate the tag tables. Greenfield and brownfield, same chat.
Characterization tests the agent writes by observing scan-cycle behavior, re-run after every change. Pytest, coverage, CI. All out of the box, because the source is Python.
The IDE
Drop a vendor project in. Browse it as Python. Ask the agent for changes and watch it apply diffs across files, then verify in the simulator before you see them. Export back to a vendor file when you're done. No tool switching, no copy-paste, no context lost between steps.
1 · File tree
Vendor projects open as Python. Function blocks, routines, IO configs, and utilities sit where you'd expect them to.
2 · Editor
Standard Python. Modern editing tools work on your PLC code automatically: autocomplete, jump-to-definition, refactor.
3 · AI chat
Reads the project, applies edits across files, and verifies in the simulator before showing you the diff.
4 · Simulator, tests, and I/O
Pin existing behavior, run scenarios, inspect IO maps. The same panel the agent uses to verify itself before showing you a change.
Design Partner Program · 10 slots
We are picking ten controls teams and system integrators to run Koyl on production projects this year. Full toolchain, direct support, and the people building it on the other end of the line.
In exchange we ask for what we cannot get any other way: production usage, candid feedback, and one quote at the end.
Who we're looking for
What you get
What we ask