Skip to main content

omninode

OmniMarket

CI Python 3.12+ License: MIT

OmniMarket is the portable ONEX (OmniNode eXecution) workflow package registry — the consolidation target for all OmniNode automation logic. It ships 384 contract-backed node entry points (as of v0.4.11) covering build loops, PR lifecycle management, sweeps, projections, ledger, memory orchestration, session management, and diagnostics. Platform wrappers invoke Market nodes for execution, but never own the business logic themselves.

Every node is a self-contained package with a contract.yaml declaring its handler bindings, input/output models, subscribed and published topics, FSM transitions, and terminal event. The runtime loads those contracts to wire event-bus subscriptions and inject handler dependencies — handlers never hardcode topic strings or construct their own collaborators.

Archetype Purity Description
compute Pure Stateless transformation. No I/O side effects.
reducer Pure FSM state transition. Emits next-state events.
effect Effectful Performs external I/O (API calls, file writes, deployments).
orchestrator Effectful Composes sub-handlers via FSM. Owns in-process state.
projection Effectful Consumes event streams, writes to read models.
service Effectful Long-running daemon (event emission, health monitoring).

Documentation

Architecture, guides, and reference documentation for this repo live in the OmniNode knowledge base, not in this repository:

Governance policy and operator runbooks that carry real infrastructure values live in knowledge-base-internal.

Repository Layout

omnimarket/
├── src/omnimarket/
│   ├── nodes/                  # All node packages (node_<name>/)
│   ├── events/                 # Shared event models (ledger, envelopes)
│   ├── models/                 # Cross-node shared Pydantic models
│   ├── protocols/              # Shared protocol interfaces
│   ├── projection/             # Projection helpers and base classes
│   ├── routing/                # Event routing and dispatch
│   ├── intelligence/           # LLM and inference abstractions
│   ├── inference/              # Model selection and endpoint routing
│   ├── classifiers/            # Shared classification logic
│   ├── cli/                    # CLI entry points
│   ├── config/                 # Configuration models and loaders
│   ├── configs/                # Configuration files and overlays
│   ├── data/                   # Static data assets
│   ├── registry/               # Node registry helpers
│   ├── enums/                  # Shared enumerations
│   ├── adapters/               # Adapter templates for external platforms
│   ├── runtime/                # Runtime version handshake utilities
│   ├── logging/                # Structured logging helpers
│   └── experiments/            # Experimental sub-projects (ADK eval, etc.)
├── tests/                      # Golden-chain and contract tests
├── scripts/
│   ├── ci/                     # CI gate scripts (runtime sweep, metadata check)
│   ├── validation/             # Additional validation scripts (leaked literals, contract overlay boundary, topic lint)
│   ├── generate_node.py        # Node scaffold generator
│   ├── generate_adapters.py    # Adapter output generator
│   └── lint_no_hardcoded_topics.py
├── docs/                       # Non-prose artifacts only: brand assets, OCC
│                               # work-tracking contracts, generated evidence
│                               # and audit data. Prose lives in the knowledge
│                               # base (see Documentation above).
├── pyproject.toml
└── CLAUDE.md

A node package is src/omnimarket/nodes/node_<name>/ with contract.yaml, metadata.yaml, and handlers/; orchestrators add protocols/, and nodes may add models/ and node-local tests/. Nodes are discovered through the onex.nodes entry-point group in pyproject.toml — the runtime iterates those entry points, loads each contract.yaml, and wires subscriptions automatically.

Adding a Node

uv run python scripts/generate_node.py --name node_<name> --type compute

Then register the entry point in pyproject.toml under [project.entry-points."onex.nodes"], add a golden-chain test at tests/test_golden_chain_<name>.py proving the contract over EventBusInmemory, and run the validation gates below. The full pattern — contract fields, metadata fields, harness requirements, and the canary nodes to copy from — is in the knowledge base pages linked above.

Common Commands

# Install dependencies
uv sync --all-extras

# Run tests (excluding Kafka-dependent tests)
uv run pytest tests/ -v --tb=short -m "not kafka"

# Unit tests only
uv run pytest tests/ -v -m unit

# Lint and format
uv run ruff check src/ tests/
uv run ruff format --check src/ tests/

# Type-check
uv run mypy src/omnimarket/ --strict

# CI gates
uv run python -m omnimarket.nodes.node_runtime_sweep --import-check
uv run python scripts/ci/check_node_metadata_dependencies.py

Test markers: unit (isolated), integration (multi-component), slow (>1s), kafka (requires a running broker).

What This Repo Owns

  • onex.nodes entry points for contract-backed workflow nodes.
  • Node package directories under src/omnimarket/nodes/node_*.
  • contract.yaml and metadata.yaml files defining node interfaces, capabilities, dependencies, and runtime expectations.
  • Handler logic for compute, reducer, effect, orchestrator, projection, and service nodes.
  • Adapter templates for external platform integrations.
  • Golden-chain tests and metadata checks proving node contracts with an in-memory event bus.
  • Shared Market primitives (projection, inference, routing, intelligence, ledger, and metadata helpers) that prevent cross-node reach-in.

What This Repo Does Not Own

  • Platform-specific UX prompts, slash-command presentation, editor rules, or user-facing skill copy — those belong in the wrapper repo for that platform.

  • Concrete infrastructure services (Kafka, Postgres, Docker, secrets) — those belong to the runtime/infrastructure layer.

  • Core ONEX primitives (RuntimeLocal, EventBusInmemory, envelope types, shared validators) — those belong to omnibase_core and compatibility packages.

  • Governance policy and documentation evidence — those belong to onex_change_control.

  • Memory persistence semantics and storage adapters — Market may host runnable memory workflow nodes, but the memory domain is owned by the memory repo.

  • Prose documentation — it belongs in the knowledge base (see Documentation).

  • Contributing

  • License

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

omnimarket-0.4.17.tar.gz (9.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

omnimarket-0.4.17-py3-none-any.whl (6.3 MB view details)

Uploaded Python 3

File details

Details for the file omnimarket-0.4.17.tar.gz.

File metadata

  • Download URL: omnimarket-0.4.17.tar.gz
  • Upload date:
  • Size: 9.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for omnimarket-0.4.17.tar.gz
Algorithm Hash digest
SHA256 4751eadedd95e8f70c249d5de0c56e36b644fe2d5d1a59a202ba0277872d20cb
MD5 cd8130b1777a51cb1bb2d681b1e15c80
BLAKE2b-256 8ccf1b6d213f8157b6a201d5333415669558406310e6179f036d9e556b530ab3

See more details on using hashes here.

File details

Details for the file omnimarket-0.4.17-py3-none-any.whl.

File metadata

  • Download URL: omnimarket-0.4.17-py3-none-any.whl
  • Upload date:
  • Size: 6.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for omnimarket-0.4.17-py3-none-any.whl
Algorithm Hash digest
SHA256 12a47178eebcebe11a8e547d65b5e0bafb8f23f6f103af4fb21470646f19cfe1
MD5 7f427f61d55f4e965b3f807b44a80cf8
BLAKE2b-256 64870aa85bc30e010880d38a44e2b4463cf97c6fb6c4a3b75ec50b29c0c09d66

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.4.17 This release

2 files

0.4.15

2 files

0.4.12

2 files

0.4.11

2 files

0.4.10

2 files

0.4.9

2 files

0.4.8

2 files

0.4.7

2 files

0.4.6

2 files

0.4.5

2 files

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page