automaton
Friendly state machines for Python.
Decision gist · record as of 2026-08-14
Yes. Automaton is a lightweight, actively maintained library with no security issues, low install friction, and permissive licensing. It's well-suited if you need explicit state machine semantics in your application. Install it if you're building workflows, event handlers, or any system where state transitions need to be validated and controlled; skip it if your use case is simple enough to handle with conditionals or if you prefer a different state machine abstraction.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.10 or later.
- Low install friction with a pure-wheel distribution and only two lightweight runtime dependencies.
- Active maintenance status with a recent release.
License · maintenance · safety
Apache-2.0 (permissive) — Licensed under Apache-2.0 (permissive), allowing use in commercial and proprietary projects with minimal restrictions.
last release 2026-03-24 (143 days)
0 known vulnerabilities (OSV.dev, 2026-08-14) · 137,778 downloads/mo, #11,357 on PyPI
Alternatives
Verify before relying
pip install automaton
from automaton import machines
machine = machines.FiniteMachine()
machine.add_state('start')
machine.add_state('end')
machine.add_transition('start', 'end', 'go')
machine.initialize(start_state='start')
machine.process_event('go')- Whether the library supports hierarchical or nested state machines beyond basic finite state machine patterns.
- Performance characteristics when handling large numbers of states or transitions.
- Whether task scheduling and execution features are built-in or require external integration.
What it is and what it does
Automaton is a state machine library for Python that abstracts the state machine pattern into reusable, well-documented classes. It lets you define states, transitions between them, and validation rules, then execute state changes in a controlled way. The library is built on top of PrettyTable for display and typing-extensions for type hints, making it suitable for applications that need explicit state management—from workflow engines to task orchestration to event-driven systems.
The package is actively maintained, supports modern Python versions (3.10 through 3.13), and carries no known security vulnerabilities. It's positioned as part of the OpenStack ecosystem but is general-purpose enough for any Python project requiring state machine semantics.
Use it for
- Build workflow engines where tasks move through defined states (pending, running, completed, failed) with validation at each transition.
- Implement event-driven systems that respond to specific triggers by transitioning between states in a predictable manner.
- Create task scheduling systems that track job state and enforce valid state transitions to prevent invalid operations.
- Validate state sequences in application logic to catch bugs where code attempts invalid state changes.
- Model complex business logic as explicit state machines to improve code clarity and testability.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
Automaton is a lightweight, actively maintained library with no security issues, low install friction, and permissive licensing. It's well-suited if you need explicit state machine semantics in your application. Install it if you're building workflows, event handlers, or any system where state transitions need to be validated and controlled; skip it if your use case is simple enough to handle with conditionals or if you prefer a different state machine abstraction.
Install
automaton on PyPI
Before you install
Low install friction with a pure-wheel distribution and only two lightweight runtime dependencies. Active maintenance status with a recent release.
Requires Python 3.10 or later.
License in practice
Licensed under Apache-2.0 (permissive), allowing use in commercial and proprietary projects with minimal restrictions.
Quickstart
pip install automaton
from automaton import machines
machine = machines.FiniteMachine()
machine.add_state('start')
machine.add_state('end')
machine.add_transition('start', 'end', 'go')
machine.initialize(start_state='start')
machine.process_event('go')
Verify before relying
- Whether the library supports hierarchical or nested state machines beyond basic finite state machine patterns.
- Performance characteristics when handling large numbers of states or transitions.
- Whether task scheduling and execution features are built-in or require external integration.
Package facts
| License | Apache-2.0 permissive |
| Python support | Supports the current Python release >=3.10 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 2 packagesPrettyTabletyping-extensions |
| Maintenance | Actively maintained 143 days since the last release |
| First released | |
| Downloads | 137,778 / month, #11,357 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Environment :: OpenStackIntended Audience :: Information TechnologyIntended Audience :: System AdministratorsLicense :: OSI Approved :: Apache Software LicenseOperating System :: POSIX :: LinuxProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Typing :: Typed |
Evidence: automaton-3.4.0-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “state machine library”
- automatonAutomaton provides state machine classes and utilities for Python,…
- fysomFysom is a finite state machine library that lets you define states,…
- transitionsTransitions is a lightweight state machine library that lets you…
Give your agent the search over MCP, or paste the wish link into any chat.
More Software Development packages
Provides backported and experimental type hints for Python 3.9+, allowing use of newer typing features on older Python versions and enabling early experimentation with type system PEPs before they enter the standard library.
NumPy provides an N-dimensional array object and a comprehensive suite of mathematical, linear algebra, Fourier transform, and random number functions for scientific computing in Python.
FastAPI is a Python web framework for building REST APIs using type hints, with automatic request validation, serialization, and interactive API documentation.
Provides a way to document function parameters, class attributes, return types, and variables inline using Python's `Annotated` type hint syntax instead of traditional docstrings.
Typer builds command-line applications from Python functions using type hints, automatically generating help text, argument parsing, and shell completion.
Install it if you are building CLIs in Python.
Distlib provides low-level packaging utilities for building, distributing, and managing Python software—including metadata handling, version specifiers, wheel support, script installation, and dependency resolution.
See also Automat · cellpylib · django-fsm-2 · python-statemachine · django-fsm · taskflow · transitions · django-fsm-log · greenery · fysom