RungsA Continuis Labs Experiment
Rungs · For controls engineers

Upload your PLC export. Get the documentation you wish you'd had.

Rungs reads Rockwell L5X, Siemens TIA Portal, and CODESYS exports and produces the structured documentation that should have shipped with the program. Routine summaries in plain English. I/O cross-references. Flagged anti-patterns. Audit-grade markdown that lives in your repo — not changing your control logic, just preserving the knowledge in it.

The Problem

Every plant inherits its own undocumented program. Every shift loses a little more institutional memory.

The person who wrote the routine retired in 2019. The naming convention shifted twice. The 'comments' are PLC comments — a sentence per rung if you're lucky, abbreviations you can't decode if you're not. The wall of paper schematics is two revisions out of date.

When something goes wrong at 2 AM, you're not reading documentation. You're reading the program. Hoping the previous engineer thought the same way you do.

The fix isn't to rewrite anything. The fix is to make the program legible — to your night shift, to the new hire next quarter, to the auditor next year. Rungs reads what you already have and writes the documentation the program should have shipped with.

0%
of inherited PLC programs come with usable documentation

controls-engineer community consensus

12h+
average to manually document a medium-complexity routine

industry estimate

75%
of plant downtime root-caused to undocumented code or wiring

EIT / LearnTechnique research

The Solution

Six layers. Read your exports. Write the docs. Never touch your logic.

Rungs is read-only by design. The L5X / TIA / CODESYS files you already export for backup are what Rungs ingests. Nothing about your running program changes; what changes is whether anyone can still read it next year.

  1. 01

    Upload — every vendor's native export

    Drop in a Rockwell L5X, a Siemens TIA Portal export, or a CODESYS .projectarchive. Rungs accepts what your engineering team already exports for backups; you don't change any workflow.

    • Rockwell L5X
    • Siemens TIA
    • CODESYS
  2. 02

    Parse — vendor-aware, never modifying

    A dedicated lexer per vendor walks the file: routines, tags, comments, AOIs, structured text. Rungs is read-only by design — the source file is never altered, never written back, never deployed.

    • Read-only
    • Per-vendor parser
    • AOI-aware
  3. 03

    Cross-reference — the I/O usage graph

    Every tag is traced through every routine. Where it's read, where it's written, which subroutine owns it, which task it runs in. The thing your wall-of-paper schematics used to provide.

    • I/O graph
    • Tag provenance
    • Task scoping
  4. 04

    Document — plain English, by an engineer who reads ladder

    Each routine gets a summary written like a senior controls engineer onboarding the night shift. Rung-by-rung intent, not just a transcription. Anti-patterns flagged, not auto-corrected.

    • Routine summaries
    • Anti-pattern flags
    • Plain English
  5. 05

    Schematic — markdown-rendered logic flow

    Sequence diagrams for state machines, dependency trees for safety interlocks, signal-flow maps for analog chains. Renders in any Git repo viewer, prints clean, doesn't need a license.

    • Mermaid
    • Markdown
    • Print-ready PDF
  6. 06

    Export — to your repo, audit trail intact

    Push to Git, save to PDF, drop into a SharePoint. Every line of documentation traces back to a rung in the source. Auditors can verify; new hires can ramp; you don't lose the knowledge when someone leaves.

    • Git
    • PDF
    • Audit-grade
Live preview

Source on the left. Docs in the middle. Audit-grade artifact on the right.

Toggle the source pane between the raw L5X export and the rendered ladder diagram (the format your engineers actually read). Toggle the deliverable between the markdown schematic and a styled PDF. The middle pane — the documentation itself — stays put.

Routine
Source
// rung 0 — Start when E-stop healthy + guard closedStart_PBXICEStop_HealthyXICGuard_ClosedXICConveyor_RunOTE// rung 1 — Latch run until stop pressedConveyor_RunXICStop_PBXIOConveyor_Run_LatchOTE// rung 2 — Drive VFD outputConveyor_Run_LatchXICOut_Motor_RunOTE
Generated documentationconveyor-start.md
Summary

Starts the packaging-line conveyor when the operator presses Start, with safety interlocks for E-stop and guard door. Run command latches until Stop is pressed; the latched run drives the motor VFD. Three rungs, no AOIs, no timers — straightforward start/stop with the standard safety chain a packaging line should have.

I/O Cross-Reference
TagTypeReadWrite
Start_PBDiscrete InputRung 0
EStop_HealthyDiscrete InputRung 0
Guard_ClosedDiscrete InputRung 0
Stop_PBDiscrete InputRung 1
Conveyor_RunInternal BitRung 1Rung 0
Conveyor_Run_LatchInternal BitRung 2Rung 1
Out_Motor_RunDiscrete OutputRung 2
⚠ FlaggedSingle-bit latch spans two rungs (Rung 0 → Rung 1)

Conveyor_Run is written in Rung 0 and re-read for latching in Rung 1. A single sealed-circuit rung (XIC in parallel with the latch bit) is the canonical Rockwell pattern — easier for the next engineer to read.

ℹ NoteStop_PB examined for OFF (XIO), not a hardware NC contact

Field wiring should still use a normally-closed E-stop circuit. Confirm the Stop_PB hardware contact matches this expectation in the wiring schedule.

Deliverable

Rungs Documentation Report

Conveyor_Start · MainLine

Controller

PACKAGING_LINE_A

Routine — Conveyor_Start

Type: Ladder Logic (RLL) · Generated: 2026-05-26 16:55 UTC · Source hash: sha256:a4f1…2c9d

1. Summary

Starts the packaging-line conveyor when the operator presses Start, with safety interlocks for E-stop and guard door. Run command latches until Stop is pressed; the latched run drives the motor VFD output.

2. I/O Cross-Reference

TagTypeReadWrite
Start_PBDiscrete InRung 0
EStop_HealthyDiscrete InRung 0
Guard_ClosedDiscrete InRung 0
Stop_PBDiscrete InRung 1
Conveyor_RunInternalRung 1Rung 0
Conveyor_Run_LatchInternalRung 2Rung 1
Out_Motor_RunDiscrete OutRung 2

3. Rung Breakdown

  1. Rung 0

    Start conveyor on operator request when E-stop is clear and guard interlock is closed.

    XIC(Start_PB) ∧ XIC(EStop_Healthy) ∧ XIC(Guard_Closed) → OTE(Conveyor_Run)

    If the operator presses Start, the E-stop circuit reports healthy, and the guard door is closed, energize the Conveyor_Run flag. This rung is the safety chain entry point for the routine.

  2. Rung 1

    Latch run command until stop pressed (no edge detect).

    XIC(Conveyor_Run) ∧ XIO(Stop_PB) → OTE(Conveyor_Run_Latch)

    Once Conveyor_Run is set, this rung holds Conveyor_Run_Latch energized as long as Stop_PB is not pressed. Pressing Stop drops the latch immediately.

  3. Rung 2

    Drive output to VFD.

    XIC(Conveyor_Run_Latch) → OTE(Out_Motor_Run)

    The latched run state energizes Out_Motor_Run, which connects to the VFD start input. Field documentation: see drawing PKG-A-EL-014, sheet 3.

Generated by Rungs · v0.4 · 2026-05-26 16:55 UTCPage 1 of 1

Source views are read-only. Toggle the deliverable to compare what lands in your repo vs. what prints to the binder.

What ships with each run

The documentation package, in one ingest.

Drop in an export. Get the artifacts your operators, auditors, and new hires actually need — on every regeneration, in the format each one prefers.

On Your Data

Your file. Your network. Your IP.

Rungs is designed for plants that treat a controller backup as proprietary by default. Three guarantees about where your data goes — written down, not buried in a privacy policy.

01

On-prem option ships at v1

The Enterprise tier runs the parser, the language model, and the documentation store entirely inside your network. No outbound traffic, no telemetry. For regulated facilities and OEM-confidential logic, this is the default deployment.

02

Cloud tiers are tenant-isolated

Free / Pro / Team uploads are encrypted in transit, processed inside an isolated per-tenant environment, and the parsed AST is what the language model sees — not the raw export. Nothing is retained beyond your subscription.

03

No training corpus. Period.

Your routines never feed any model — not the model Rungs uses, not any third-party model, not a future fine-tune. The business model is per-routine pricing, and the data-handling story is the same regardless of tier.

Pricing

Pricing that scales with routines, not with how many engineers your plant employs.

Pricing locks in the day the product ships. Reserve the early-access tier now to lock in 50% off for life — see below.

Early-access reservation

Reserve a Pro plan at $14/mo — 50% off, for life.

First 200 reservations only. No charge until launch — refunded if Rungs doesn't ship within 6 months.

Reserve early access
What's Next

What ships after v1.

Driven by what controls engineers in the waitlist conversations have actually asked for.

Join the waitlist

The earlier you join, the more you shape v1.

I'm Tom — a data engineer with 4 years of production IoT, including running real-time data infrastructure for plants with exactly this documentation problem. If you've inherited code you can't read, your input shapes Rungs.

Built for controls engineers and plant maintenance teams. Reply to the confirmation email and tell me about your specific situation — that's what shapes v1.

No spam. One confirmation, then only when there's news.

FAQ

Honest answers.