Runtime engine for EvalForge generated applications
Project description
evalforge-runtime
Runtime engine for EvalForge generated applications. Provides a FastAPI server that executes LLM-powered processes with cost tracking, execution logging, secret management, and file handling.
Completely vibe-coded in 1 hour.
Installation
pip install evalforge-runtime
With optional extras:
# Langfuse observability
pip install evalforge-runtime[langfuse]
# Azure Key Vault secrets
pip install evalforge-runtime[azure]
# AWS Secrets Manager
pip install evalforge-runtime[aws]
# Everything
pip install evalforge-runtime[all]
Quick start
1. Create a config file
Create evalforge.config.yaml in your project root:
project:
id: my-project
llm:
model: anthropic/claude-sonnet-4-6
processes:
classify:
process_id: classify
trigger:
type: webhook
instructions: |
Classify the incoming support ticket into one of: billing, technical, general.
2. Set your API keys
export ENDPOINT_API_KEYS=my-secret-key
export ANTHROPIC_API_KEY=sk-ant-...
ENDPOINT_API_KEYS is a comma-separated list of keys that authenticate requests to the runtime.
3. Start the server
evalforge-runtime start --config evalforge.config.yaml
The server starts on http://localhost:8000 by default.
4. Call a process
curl -X POST http://localhost:8000/process/classify \
-H "Authorization: Bearer my-secret-key" \
-H "Content-Type: application/json" \
-d '{"ticket_text": "I cannot log in to my account"}'
API endpoints
| Method | Path | Description |
|---|---|---|
GET |
/health |
Health check with version and uptime |
POST |
/process/<name> |
Execute a process (authenticated) |
GET |
/executions |
Query execution history |
GET |
/executions/:id |
Single execution detail |
GET |
/executions/stats |
Aggregated cost, latency, and volume stats |
Configuration
The runtime is configured via evalforge.config.yaml. Environment variables can be referenced with ${VAR_NAME} syntax.
Top-level sections
project:
id: my-project # Required: project identifier
evalforge_url: https://... # Optional: EvalForge server URL
version: 1.0.0
llm:
model: anthropic/claude-sonnet-4-6 # Default LLM model (LiteLLM format)
database:
url: sqlite+aiosqlite:///./data/app.db # Execution log database
storage:
type: local # local or s3
path: ./data/files # Local file storage path
auth:
methods:
- type: api_key # api_key or oauth2
secrets:
provider: env # env, evalforge, azure_keyvault, aws_secrets_manager, sap_credential_store
observability:
langfuse:
enabled: false
host: https://cloud.langfuse.com
Process configuration
Each process defines an LLM-powered task:
processes:
my-process:
process_id: my-process
trigger:
type: webhook # webhook, schedule, or process
cron: "0 9 * * *" # For schedule triggers
after: other-process # For process triggers (chaining)
instructions: |
Your LLM instructions here...
llm_model: openai/gpt-4o # Override default model
connector: exchange # Optional: built-in connector
review:
enabled: true
timeout: 24h
Custom process modules
For advanced logic, provide Python modules for the three-phase pipeline:
processes:
my-process:
process_id: my-process
trigger:
type: webhook
before_module: processes.my_process.before # Pre-processing
execution_module: processes.my_process.execution # Custom LLM call
after_module: processes.my_process.after # Post-processing
Each module should define an async function matching the phase signature. See the EvalForge docs for details.
Secret providers
The runtime supports multiple secret backends:
| Provider | Config value | Description |
|---|---|---|
| Environment | env |
Read from environment variables (default) |
| EvalForge | evalforge |
Fetch from EvalForge server |
| Azure Key Vault | azure_keyvault |
Azure Key Vault (pip install evalforge-runtime[azure]) |
| AWS Secrets Manager | aws_secrets_manager |
AWS Secrets Manager (pip install evalforge-runtime[aws]) |
| SAP Credential Store | sap_credential_store |
SAP BTP Credential Store |
CLI reference
evalforge-runtime start [OPTIONS]
Options:
--config PATH Path to evalforge.config.yaml (default: evalforge.config.yaml)
--host TEXT Bind host (default: 0.0.0.0)
--port INT Bind port (default: 8000)
Development
# Clone and install
git clone https://github.com/JannisConen/evalforge-runtime.git
cd evalforge-runtime
pip install -e ".[dev]"
# Run tests
pytest -v
# Lint
ruff check .
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file evalforge_runtime-0.1.3.tar.gz.
File metadata
- Download URL: evalforge_runtime-0.1.3.tar.gz
- Upload date:
- Size: 277.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
01b0e0e99800b3de474d2f6774a50f22d9dc2518050fe639c76e1dcf700e755f
|
|
| MD5 |
5ff7a9e14bc48a8f6057bbc7dbf1be70
|
|
| BLAKE2b-256 |
0adcc6a104977f173694b6541f59bab6d24c21def28defcba840c8feda3c082b
|
Provenance
The following attestation bundles were made for evalforge_runtime-0.1.3.tar.gz:
Publisher:
workflow.yml on JannisConen/evalforge-runtime
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
evalforge_runtime-0.1.3.tar.gz -
Subject digest:
01b0e0e99800b3de474d2f6774a50f22d9dc2518050fe639c76e1dcf700e755f - Sigstore transparency entry: 1189987695
- Sigstore integration time:
-
Permalink:
JannisConen/evalforge-runtime@f5adbc078f2b0cb26dee218da39282ae8f8e1f9b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/JannisConen
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@f5adbc078f2b0cb26dee218da39282ae8f8e1f9b -
Trigger Event:
push
-
Statement type:
File details
Details for the file evalforge_runtime-0.1.3-py3-none-any.whl.
File metadata
- Download URL: evalforge_runtime-0.1.3-py3-none-any.whl
- Upload date:
- Size: 67.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
942cd8c345571cee39f29158018a1b84207bdd5bb06842a81b2e49b86813e726
|
|
| MD5 |
2fd1c68d4bc8f0e97181c387f7f57c06
|
|
| BLAKE2b-256 |
9b3baad2f4ac7979210b76769123fc42612f79b82c9d1e336e53f437eadbd0c8
|
Provenance
The following attestation bundles were made for evalforge_runtime-0.1.3-py3-none-any.whl:
Publisher:
workflow.yml on JannisConen/evalforge-runtime
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
evalforge_runtime-0.1.3-py3-none-any.whl -
Subject digest:
942cd8c345571cee39f29158018a1b84207bdd5bb06842a81b2e49b86813e726 - Sigstore transparency entry: 1189987696
- Sigstore integration time:
-
Permalink:
JannisConen/evalforge-runtime@f5adbc078f2b0cb26dee218da39282ae8f8e1f9b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/JannisConen
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@f5adbc078f2b0cb26dee218da39282ae8f8e1f9b -
Trigger Event:
push
-
Statement type: