PlantControl
Control · Identification · Simulation · Linear algebra

Control systems in pure Go

Open-source libraries for designing controllers, identifying process models, and simulating plants, built on a verified Go BLAS/LAPACK. No cgo or Fortran toolchain needed.

$ go get plantcontrol.org/v2/controlsys/v2
Libraries

From matrices to closed loops

Each layer builds on the one below it: dense linear algebra, then state-space control, then identification and simulation tools.

controlsys gopher holding a feedback block diagram

controlsys

A control-systems toolbox for linear time-invariant models, with state space as the core representation.

  • Bode, Nyquist, margins, root locus
  • LQR, LQG, H2, H∞, pole placement
  • PID tuning, Systune, Kalman filters
go get plantcontrol.org/v2/controlsys/v2
github.com/PlantControl/controlsys →

gonum

PlantControl's fork of Gonum, focused on pure-Go BLAS and LAPACK, with the extra routines that control design needs.

  • Generalized eigenproblems (Dgges, Dtgsen)
  • Checked against netlib reference LAPACK
  • SIMD kernels in progress for ARM64 and AMD64
go get plantcontrol.org/v1/gonum
github.com/PlantControl/gonum →

oracle-pattern

Record what legacy numerical code does once, then replay those recordings against its modern replacement. Demonstrated with two SLICOT routines (MB01UD, SB03MD) ported to Go.

  • Versioned baselines of recorded calls
  • Agent skill and migration playbook
  • Video lessons: Claude Code with the code-modernization plugin, and Codex CLI
github.com/PlantControl/oracle-pattern →

systemidPrivate

Native Go system identification: ARX, ARMAX, subspace (N4SID, MOESP, CVA), closed-loop and frequency-domain methods. Results keep a reproducible record of how each model was fitted.

process-labPrivate

A browser workbench for block diagrams, simulation, PID/LQG/H∞ design, and system identification. Ships as a single Go executable.

Principles

Engineered to be trusted

Control software runs real plants. Every library is held to the same rules.

Pure Go

No cgo and no Fortran runtime. A single go get cross-compiles anywhere Go runs.

Verified against references

Numerical results are checked against netlib LAPACK, SLICOT, and recorded oracles before they ship.

AI-written, test-gated

Code after the fork is AI-generated. Persistent tests, race checks, and reference comparisons gate every change.

Open source

Public libraries are MIT or BSD licensed. Upstream attribution is preserved where code descends from Gonum or netlib.

Go modules

Vanity import paths

ModuleRepository
plantcontrol.org/v1/gonumgonum
plantcontrol.org/v2/controlsys/v2controlsys
plantcontrol.org/private/…private repositories

Private modules need Git access and go env -w GOPRIVATE=plantcontrol.org/private.

Gopher in a hard hat holding a tablet with a feedback control diagram