A plant is a programmable system

Define agents, register custom tools, subscribe to run events and write your own connectors. Everything the console does is an API call you can make.

  • Python SDK
  • REST + gRPC
  • Webhooks and event stream

Start a run in eleven lines

Authenticate, pick a line, submit a lot as a goal, and stream the result.

quickstart.pypython
from footeon import Client

client = Client(api_key=os.environ["FOOTEON_API_KEY"], plant="HCMC-03")

run = client.runs.create(
    line="line-b",
    model="velo-trainer-2",
    lot_size=1200,
    size_curve="EU36-46",
    materials={"hide_batch": "LH-2291", "eva_lot": "EV-1180", "adhesive": "AD-22"},
    objective="yield,bond_strength",
)

for event in run.stream():
    print(event.step, event.status, event.duration_s)

What you get back

  • twin.simulate_run · succeeded · 160
  • cut.nest_optimize · succeeded · 252
  • stitch.tension_control · succeeded · 668
  • mold.density_control · succeeded · 591
  • last.fit_control · succeeded · 393
  • bond.window_control · needs_approval · 184

Events are also delivered by webhook and to your historian.

Teach an agent your machine

If you run equipment we do not ship a connector for, register it as a tool with a schema and the agent can call it.

custom_tool.pypython
from footeon import tool

@tool(
    name="press.set_recipe",
    description="Set temperature, pressure and dwell on a compression press.",
    validated=True,        # requires human approval by default
    schema={
        "press": "str",
        "temp_c": "float[140,190]",   # range enforced at the edge
        "pressure_bar": "float[2.0,5.0]",
        "dwell_s": "int[120,320]",
    },
)
def set_recipe(press, temp_c, pressure_bar, dwell_s):
    return opcua.write(f"ns=3;s={press}.recipe",
                       {"T": temp_c, "P": pressure_bar, "D": dwell_s})

Tool contract

  • Ranges enforced at the edge, outside the model
  • Validated tools inherit approval routing
  • Every call is logged with arguments and result
  • Failures fall back to last known-good recipe

Drive a line from your terminal

The CLI wraps the same API and is what most process engineers actually use.

footeon-cliterminal
$ footeon runs create --line line-b --model velo-trainer-2 --lot 1200
run RUN-4417 created · 8 steps planned · twin simulation queued

$ footeon runs watch RUN-4417
01 twin.simulate_run      ✓ succeeded    2m40s
02 cut.nest_optimize      ✓ succeeded    4m12s   yield 87.4%
03 stitch.tension_control ✓ succeeded   11m08s   3 skips corrected
04 mold.density_control   ✓ succeeded    9m51s   0.24 g/cm³
05 last.fit_control       ✓ succeeded    6m33s   dev 0.6 mm
06 bond.window_control    ! approval     3m04s   activation 64→66 °C

$ footeon approvals grant A-88213 --note "humidity drift confirmed"
approved · agent resumed · audit entry written

Install

pip install footeon

Ships with shell completion, a local run simulator against the twin, and offline mode for air-gapped plants.

Full CLI reference →

Everything you can build against

Six integration surfaces, all versioned and all documented.

Python SDK

Agents, runs, tools, approvals, evaluations and fleet management.

REST API

Resource-oriented, cursor-paginated, idempotency keys on every write.

gRPC streaming

Low-latency run and telemetry streams for edge and historian consumers.

Webhooks

Signed events for run state, approvals, defects and model changes.

Connector SDK

Write adapters for machines we do not ship, in Python, Go or Rust.

Edge runtime API

Local API on the factory-edge unit for offline and air-gapped operation.

Core API resources

The nouns you will work with.

Primary API resources and their purpose
ResourcePurposeKey operations
runsA lot moving through the linecreate, get, stream, cancel
agentsA bound agent on a linecreate, update autonomy, deploy
toolsMachine capabilities agents may callregister, list, validate
approvalsPending validated-parameter changeslist, grant, deny
pairsPer-pair traceability recordsget, search, export
modelsModel versions per linelist, promote, rollback

The event stream is the product

Everything the console shows is derived from this stream, and so can your systems be.

webhook payloads · RUN-4417event stream
  1. 09:14:02 hide.scan(batch="LH-2291", hides=64, sensor="line-b/cam-01")
  2. 09:14:19 64 hides mapped · 1,842 defects marked · mean usable area 91.2%
  3. 09:14:20 nest.optimize(pattern="velo-trainer-2", size_curve="EU36-46", objective="yield")
  4. 09:14:33 nest v7 · leather yield 87.4% (+8.3 pts vs baseline) · solve 12.3 s
  5. 09:18:44 cutter.execute(table="CT-2", nest="v7", blade_profile="leather-1.8mm")
  6. 09:22:56 2,412 parts cut · 0 out-of-tolerance · scrap 12.6% (plant baseline 20.9%)
  7. 09:41:10 stitch.monitor(stations=14, thread_lot="TL-77")
  8. 09:52:18 3 skipped stitches detected on lateral overlay · 3 uppers re-run · 0 escapes
Every line is real, copyable text and is announced politely to screen readers.

Delivery

  • Signed with HMAC-SHA256
  • At-least-once with idempotency keys
  • Replayable for 30 days
  • Mirrored to your historian

How to build reliably on Footeon

Do

  • Treat runs as idempotent and replayable
  • Subscribe to approvals rather than polling
  • Pin the API version in production integrations
  • Test against the local twin simulator before a live line

Avoid

  • Writing machine setpoints outside a registered tool
  • Bypassing approval routing for validated parameters
  • Assuming cloud connectivity at the edge
  • Storing per-pair records outside the audit trail

API characteristics

What to design against.

  • 99.9% control-plane API availability target
  • 80ms p95 edge tool-call round trip
  • 30d event replay window
  • 24 tool families available today

Developer questions

  • No. Footeon is a software and factory-edge autonomy layer that sits on top of the machines you already run. We connect over OPC UA, MQTT, Modbus TCP and vendor SDKs, read sensors and vision, and write setpoints back through the controls you already trust — with approval gates on any validated parameter.

Get API access

Sandbox credentials include the twin simulator, so you can build a full integration before touching a machine.