Skip to main content

Simforge

Simforge client for provider-based API calls.

Monorepo Structure

This package is part of the Harvest monorepo. While the TypeScript/JavaScript packages use a pnpm workspace for shared dependencies, this Python package uses Poetry for its dependency management.

Note: The pnpm workspace includes:

  • simforge-web - Next.js web application
  • simforge-typescript-sdk - TypeScript SDK
  • simforge-vscode - VS Code extension
  • frontend - Legacy frontend

From the root directory, you can run TypeScript tests and validation across all packages with pnpm test or pnpm validate.

Installation

Basic Installation

pip install simforge-py

With OpenAI Tracing Support

If you want to use the OpenAI Agents SDK tracing integration:

pip install simforge-py[openai-tracing]

Local Development

For local development:

cd simforge-python-sdk
poetry install --with dev

After installation, you can use developer tasks. For the best experience, add Poetry's venv to your PATH:

# Add to your ~/.zshrc or ~/.bashrc
export PATH="$(poetry env info --path)/bin:$PATH"

# Then you can use 'dev' directly (no ./run or poetry run needed!)
dev list
dev test

See Development Tasks below for all available commands.

Or install as an editable package from the parent directory:

poetry add --editable ../simforge-python-sdk

Usage

Basic Usage

from simforge import Simforge

client = Simforge(
    api_key="sf_your_api_key_here",
    service_url="https://simforge.goharvest.ai",  # Optional, defaults to production
    env_vars={"OPENAI_API_KEY": "sk-your-openai-key"},  # Optional, for local BAML execution
)

result = client.call("method_name", arg1="value1", arg2="value2")

OpenAI Agents SDK Tracing

If you have the openai-agents package installed (via pip install simforge-py[openai-tracing]), you can use the tracing processor:

from simforge import Simforge
from agents import set_trace_processors

simforge = Simforge(api_key="sf_your_api_key_here")
processor = simforge.get_openai_tracing_processor()

# Register the processor with OpenAI Agents SDK
set_trace_processors([processor])

# Now all your agent traces will be sent to Simforge

Note: If you try to use get_openai_tracing_processor() without installing the openai-tracing extra, you'll get a helpful error message telling you to install it.

Configuration

  • api_key: Required - Your Simforge API key (generate from your Simforge dashboard)
  • service_url: Optional - The Simforge service URL (defaults to https://simforge.goharvest.ai)
  • env_vars: Optional - Environment variables for LLM providers (e.g., {"OPENAI_API_KEY": "..."})
  • enabled: Optional - Enable/disable tracing (defaults to True). When False, decorated functions still execute but no spans are sent.

Development Tasks

This project uses a Python-based developer tasks module (dev/) instead of Makefiles for better cross-platform support and more robust CLI capabilities.

Using Developer Tasks

After running poetry install --with dev, you can use developer tasks:

Quick Setup (One-time)

# Install dependencies (creates the 'dev' script in the venv)
poetry install --with dev

# Run this script to add to PATH for current session and get command to make it permanent
./setup-dev-path.sh

# Copy-paste the command it outputs, then reload your shell config:
source ~/.zshrc  # or ~/.bashrc

The setup-dev-path.sh script will:

  • Add the venv bin to PATH for your current session
  • Detect your shell (zsh/bash) and output a command you can copy-paste to make it permanent
  • Skip if already configured

Using Developer Commands

Once PATH is set up, use commands directly - just like make <target>:

dev list              # List all available commands
dev test              # Run tests
dev test --verbose    # Run tests with verbose output
dev lint              # Lint code
dev format            # Format code
dev build             # Build package
dev publish patch      # Publish with version bump

How it works: When you define [tool.poetry.scripts] in pyproject.toml, Poetry creates executable scripts in the venv's bin/ directory. Adding that bin/ to PATH makes those scripts available as commands.

Key advantage: Just like Makefiles, it's super clear - dev <command> is as obvious as make <target>!

Module Structure

Each command is in its own file in the dev/ module:

  • dev/test.py - Test commands
  • dev/lint.py - Linting
  • dev/build.py - Building
  • dev/publish.py - Publishing
  • etc.

This makes it easy to find and modify individual commands.

Publishing

This package uses bump-my-version for version management. To publish a new version:

# Use the dev command
dev publish patch          # Bump patch (0.3.0 -> 0.3.1)
dev publish minor          # Bump minor (0.3.0 -> 0.4.0)
dev publish major          # Bump major (0.3.0 -> 1.0.0)
dev publish version=1.2.3  # Custom version

# Or just bump version without publishing
dev bump patch
dev bump minor

The publish process will:

  1. Run all tests
  2. Bump the version in pyproject.toml
  3. Commit and tag the changes
  4. Build the package
  5. Prompt for confirmation before publishing to PyPI

Note: Publishing requires:

  • A clean git working directory (no uncommitted changes)
  • Poetry installed and configured
  • PyPI credentials configured (via poetry config pypi-token.pypi <token>)

Metadata

Release files for simforge-py 0.8.0

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

Source distribution (sdist)

Source distribution for simforge-py 0.8.0
File Size Uploaded Provenance Actions
simforge_py-0.8.0.tar.gz 29.1 kB Without provenance Details for simforge_py-0.8.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for simforge-py 0.8.0
File Interpreter ABI Platform Actions
simforge_py-0.8.0-py3-none-any.whl Python 3 none any Details for simforge_py-0.8.0-py3-none-any.whl

Total release size: 59.9 kB

Release files / simforge_py-0.8.0.tar.gz

Download URL simforge_py-0.8.0.tar.gz
Size 29.1 kB
Tags Source
SHA-256 checksum
How to use checksums
0c1535ef0c6f90edb16a9e06368205eb24255b9fe44c257bbe1f778bfdc8bb9c
BLAKE2b-256 checksum
How to use checksums
51f68000a3cbfb96b30cc42608b9c9f4b6a204fd59faee6ba4d2d3d3ae810de4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 CPython/3.11.5 Darwin/24.4.0

Release files / simforge_py-0.8.0-py3-none-any.whl

Download URL simforge_py-0.8.0-py3-none-any.whl
Size 30.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
81ef7225f341fdb45a5bc920257e17242bbcdcbe35c2cb94adbc12e7b23ff261
BLAKE2b-256 checksum
How to use checksums
b3d167031687eecbcaa8e00a542562aa27eb19df4b96078196f2c8eac63b6f5b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 CPython/3.11.5 Darwin/24.4.0

Security for simforge-py 0.8.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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