Skip to main content

ghostpipe

Linear pipeline runner with parallel groups. Steps are functions. Order is explicit. Zero dependencies.

Install

pip install ghostpipe

Usage

from ghostpipe import Pipeline, Step, Parallel

pipe = Pipeline("assessment", steps=[
    Step("parse", parse_uploads),
    Step("normalize", normalize_data),
    Parallel([
        Step("clarity", score_clarity),
        Step("context", score_context),
        Step("iteration", score_iteration),
    ]),
    Step("aggregate", aggregate_scores),
])

result = pipe.run(raw_input)
# result.status = "complete"
# result.completed = ["parse", "normalize", "clarity", "context", "iteration", "aggregate"]
# result.get("clarity") → 0.82
# result.get("aggregate") → {"overall": 0.78}

How it works

  • Step wraps a bare function. Output of one step is input to the next.
  • Parallel runs multiple steps on the same input concurrently. Outputs merge into a dict for the next step.
  • Errors halt the pipeline by default (halt_on_error=False to continue).
  • Callbacks for step start/complete/error.
  • Audit via ghostseal — every step boundary emits an event with output hash.

Parallel groups

Steps in a Parallel group receive the same input and run in threads. Results are merged into a dict:

pipe = Pipeline("score", steps=[
    Step("prep", prep_fn),
    Parallel([
        Step("x2", lambda x: x * 2),
        Step("x3", lambda x: x * 3),
    ]),
    Step("sum", lambda d: d["x2"] + d["x3"]),
])

result = pipe.run(10)
# result.get("sum") = 50

Order within the group doesn't matter. Same result every time.

With ghostseal audit

from ghostseal import SealClient

audit = SealClient(blackbox_url="https://blackbox:8443", api_key="...")
pipe = Pipeline("assessment", steps=[...], audit=audit)
pipe.run(data)
# Every step start/complete/fail emits to Blackbox

Part of the GhostLogic SDK

maelspine   → config registry
ghostseal   → audit backbone
ghostprompt → prompt management
ghostpipe   → pipeline runner (this package)
ghostrouter → LLM routing
ghostserver → MCP tools

License

Apache 2.0

Release files for ghostpipe 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ghostpipe 0.1.1
File Size Uploaded
ghostpipe-0.1.1.tar.gz 11.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ghostpipe 0.1.1
File Interpreter ABI Platform
ghostpipe-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 21.5 kB

Release files / ghostpipe-0.1.1.tar.gz

Download URL ghostpipe-0.1.1.tar.gz
Size 11.9 kB
Tags Source
SHA-256 checksum
How to use checksums
6450744624a86526cc20b95326dabb81470b1dca26088d594d02ef2cb91167a5
BLAKE2b-256 checksum
How to use checksums
122b145b548e2ad21990443f4555f72958c27f68d6c7476659f52c39f453d0c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Release files / ghostpipe-0.1.1-py3-none-any.whl

Download URL ghostpipe-0.1.1-py3-none-any.whl
Size 9.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
56961e19cc8f6b5450bd7f97639fd511f90e6d360851492af392fa453a528a19
BLAKE2b-256 checksum
How to use checksums
98c58d89d6b54258201fc196250a17507c300a7317427c12fe8dc02b00e08239
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release 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