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.4.0.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.4.0-cp312-cp312-win_amd64.whl (20.7 MB view details)

Uploaded CPython 3.12Windows x86-64

geny_harness-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (21.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

geny_harness-0.4.0-cp312-cp312-macosx_11_0_arm64.whl (21.0 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: geny_harness-0.4.0.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.4.0.tar.gz
Algorithm Hash digest
SHA256 2557ef56de9548b6d4271618659d80eeb9f4ad5d107da771529895c69873cb4b
MD5 4a5f79afdca4feb0c70af8a97960ae4a
BLAKE2b-256 b3d269b1ec51903446097bef086487072a40137b2cdca7ce1484e3a64e5dc2b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for geny_harness-0.4.0.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.4.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for geny_harness-0.4.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 548fa5f0b898df01760696bca803301873f3fd237fca697346f037f94e65778b
MD5 4981aa981821b88f6e5bf9ba7f7d2668
BLAKE2b-256 723813e78c3dd3d3fd093d517cb86225a6a4674968d6bed132aabce2435dac30

See more details on using hashes here.

Provenance

The following attestation bundles were made for geny_harness-0.4.0-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.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for geny_harness-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 71aff38891c9c10398048e13056a964eece0a5fe6a2b4285a45a207b814510e7
MD5 1973778deb6683d560ce6f549d35c77a
BLAKE2b-256 7727250c89d500e38cf1f52806d9b10b5f987bdf49895a3be601a5d8f9cc821c

See more details on using hashes here.

Provenance

The following attestation bundles were made for geny_harness-0.4.0-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.4.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for geny_harness-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ec8714d1e7afd85dfbf26a0741ab325a31ad2aee798e2f43f17007d49c706757
MD5 f5392012b102548004dc74018140f5d9
BLAKE2b-256 0e9a8e70dc580cb2926de57a9f54c0ad28bff0954a0d627fe9d25d19e08bf7b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for geny_harness-0.4.0-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