Skip to main content

Rust-powered agent pipeline library — drop-in replacement for geny-executor

Project description

geny-harness

Rust-core Python library — A drop-in replacement for geny-executor, providing the same 16-stage dual-abstraction agent pipeline architecture.

pip install geny-harness

geny-executor vs geny-harness: What's Different?

Both libraries provide identical Python APIs — the same classes, same methods, same import paths. You can switch between them by changing a single import. The difference is where the code runs.

Architecture Comparison

geny-executor (v0.3.0)                    geny-harness (v0.3.0)
┌─────────────────────────┐               ┌─────────────────────────┐
│     Python Application  │               │     Python Application  │
├─────────────────────────┤               ├─────────────────────────┤
│  Pipeline Orchestration │  Python       │  Pipeline Orchestration │  Python
│  16 Stage Execution     │               │  16 Stage Execution     │
│  EventBus / Session     │               │  EventBus / Session     │
├─────────────────────────┤               ├─────────────────────────┤
│  PipelineState (40+fld) │  Python       │  PipelineState (40+fld) │  Rust (PyO3)
│  TokenUsage / Metrics   │  dataclass    │  TokenUsage / Metrics   │  Rust struct
│  PipelineConfig         │               │  PipelineConfig         │
│  PipelineResult         │               │  PipelineResult         │
│  PipelineEvent          │               │  PipelineEvent          │
│  Error Hierarchy        │               │  Error Hierarchy        │  Rust enum
├─────────────────────────┤               ├─────────────────────────┤
│          N/A            │               │  Full Rust Core Engine  │  148 .rs files
│                         │               │  (16 stages, 60+ strat.)│  Pure Rust
│                         │               │  reqwest HTTP client    │
│                         │               │  tokio async runtime    │
└─────────────────────────┘               └─────────────────────────┘
   176 Python files                          144 Rust + 34 Python files
   deps: anthropic, pydantic, mcp           deps: Rust (compiled), anthropic

What's Actually in Rust

The data layer is implemented in Rust and exposed to Python via PyO3:

Type Python (executor) Rust (harness)
PipelineState @dataclass (40+ fields) Rust struct#[pyclass]
TokenUsage @dataclass + __add__ Rust struct + Add trait
PipelineConfig @dataclass Rust struct with apply_to_state()
PipelineResult @dataclass + from_state() Rust struct + class methods
PipelineEvent @dataclass Rust struct
ErrorCategory str, Enum Rust enum + is_recoverable()
StageDescription @dataclass Rust struct
Exceptions (6 types) Python Exception subclasses Rust error hierarchy → PyO3 exceptions

Additionally, geny-harness contains a complete Rust implementation of the entire pipeline engine (148 .rs files), including all 16 stages and 60+ strategy implementations. This Rust core is designed for:

  • Future native execution — bypassing Python entirely for maximum throughput
  • Embedding in Rust applications — use the pipeline engine directly from Rust/C/C++
  • WebAssembly compilation — run the pipeline in browsers or edge environments

What's Still in Python (Same as executor)

The pipeline orchestration layer remains in Python for both libraries:

  • Pipeline class (3-phase execution engine)
  • EventBus (pub/sub with pattern matching)
  • Session / SessionManager
  • PipelineBuilder / PipelinePresets
  • All 16 stage implementations (using anthropic SDK for API calls)

This means the actual pipeline execution flow is identical. The Anthropic API calls, streaming, tool execution, and agent loops work exactly the same way.

Performance Characteristics

Operation executor (Python) harness (Rust+PyO3) Notes
State creation ~195ms/100K ~96ms/100K Rust 2x faster — 40+ field struct init
Field access ~46ms/500K ~393ms/500K Python faster — PyO3 boundary cost
Token arithmetic ~189ms/500K ~234ms/500K Similar — PyO3 overhead offsets Rust speed
Result.from_state ~88ms/100K ~90ms/100K Identical

Key insight: For the current Python-orchestrated usage pattern, there is no significant performance difference. The real performance advantage of geny-harness will emerge when:

  1. The Rust pipeline engine is used natively (without Python)
  2. Multiple pipelines run concurrently via tokio
  3. State serialization/deserialization is done in Rust (JSON, MessagePack)

When to Use Which

Scenario Recommendation
Standard Python project geny-executor — simpler, pure Python, easier to debug
Want Rust core for future native use geny-harness — invest in Rust ecosystem now
Embedding in Rust application geny-harness — use geny-harness-core crate directly
Need to modify stage internals geny-executor — all Python, easy to fork/modify
Production with high concurrency geny-harness — Rust core ready for tokio-based scaling
Learning/prototyping geny-executor — more straightforward

Quick Start

# Identical to geny-executor — just change the import
from geny_harness import PipelinePresets

pipeline = PipelinePresets.agent(
    api_key="sk-ant-...",
    model="claude-sonnet-4-20250514",
    system_prompt="You are a helpful assistant.",
)

result = await pipeline.run("Hello!")
print(result.text)

Drop-in Replacement

# Before (geny-executor)
from geny_executor import Pipeline, PipelineConfig, PipelinePresets
from geny_executor.session.manager import SessionManager

# After (geny-harness) — just change the package name
from geny_harness import Pipeline, PipelineConfig, PipelinePresets
from geny_harness.session.manager import SessionManager

Project Structure

geny-harness/
├── crates/
│   ├── geny-harness-core/    # Pure Rust library (148 .rs files)
│   │   └── src/
│   │       ├── core/          # Pipeline, State, Config, Errors, Builder
│   │       ├── events/        # EventBus, PipelineEvent
│   │       ├── session/       # Session, Manager, Freshness
│   │       ├── tools/         # Tool, Registry, MCP
│   │       └── stages/        # 16 stages × (interface + types + artifact)
│   └── geny-harness-py/      # PyO3 bindings (cdylib)
├── python/
│   └── geny_harness/          # Python package
│       ├── core/              # Pipeline, Builder, Presets, Stage
│       ├── events/            # EventBus
│       ├── session/           # Session, Manager
│       ├── stages/            # 16 stage implementations
│       └── tools/             # Tool, Registry
└── tests/

Supported Platforms

  • Python: 3.10 — 3.14
  • OS: Linux (x86_64), Windows (x64), macOS (arm64)
  • Rust: 2021 edition (for building from source)

License

MIT

Project details


Download files

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

Source Distribution

geny_harness-0.5.3.tar.gz (18.2 MB view details)

Uploaded Source

Built Distributions

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

geny_harness-0.5.3-cp312-cp312-win_amd64.whl (20.9 MB view details)

Uploaded CPython 3.12Windows x86-64

geny_harness-0.5.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (21.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

geny_harness-0.5.3-cp312-cp312-macosx_11_0_arm64.whl (21.1 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

File details

Details for the file geny_harness-0.5.3.tar.gz.

File metadata

  • Download URL: geny_harness-0.5.3.tar.gz
  • Upload date:
  • Size: 18.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for geny_harness-0.5.3.tar.gz
Algorithm Hash digest
SHA256 77500210d64abdd27a1681f3a02f9aa59cfc84bdff54a199c45810185cc2c2e2
MD5 78bbdd12f15432ad4b9e33fe5d26d1f6
BLAKE2b-256 9de6f720a17586a5b9dd40ae763dac2bf2ea422733c51942298661977a413cc1

See more details on using hashes here.

Provenance

The following attestation bundles were made for geny_harness-0.5.3.tar.gz:

Publisher: publish.yml on CocoRoF/geny-harness

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geny_harness-0.5.3-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for geny_harness-0.5.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 913c88ee35a9f1bc8158f2c508ae8a84db2764d7c4160dae394b3f201b20bbbf
MD5 5e4f3f9b37838ada2fb1ac8652de228e
BLAKE2b-256 f2a32de95e63929b06a5a6a9a8eb6c10f75ae80c36d083c6ac2229d781faeab4

See more details on using hashes here.

Provenance

The following attestation bundles were made for geny_harness-0.5.3-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on CocoRoF/geny-harness

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geny_harness-0.5.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for geny_harness-0.5.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c462acad88e3ac3b33bc144227be67f6e4d96241d431b72087bc2b96faa39877
MD5 da937420b3fd6ab7d551abc71012ee6b
BLAKE2b-256 93dd8e3291673db1e1e851ca3b08fecb99e47c8d30e714bc2d0e56e3905e27ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for geny_harness-0.5.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on CocoRoF/geny-harness

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geny_harness-0.5.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for geny_harness-0.5.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a5835e4565ba7c9c6a08ca3401ee8f3652649f7b4b63d679c3edaeef589aacc3
MD5 afcf43e98fc57ebaa5241b92d2bd1dd1
BLAKE2b-256 9c0103d932ada3510fedfbac5e5d2cb7cc0eed32c2d8409a3d5812750cd81111

See more details on using hashes here.

Provenance

The following attestation bundles were made for geny_harness-0.5.3-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on CocoRoF/geny-harness

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page