Agentic benchmark explorer for SGLang.
Project description
perferox
Perferox is a small agentic benchmark explorer for inference engines and ML systems performance. The first target is SGLang.
This is alpha software. It is not ready for common use yet. Expect rough edges, missing docs, changing APIs, and places where you still need to understand the repo before trusting a run.
The shape is intentionally simple: give an agent a bounded objective, let it delegate benchmark workers, run experiments through narrow tools, and save the parts worth keeping. The point is not to make a giant benchmark platform. The point is to make it easy to poke at weird corners of an inference stack without losing track of what already happened.
The first use case is SGLang serving benchmarks. Perferox is meant to try different models, backends, cache settings, request patterns, chips, and setup conditions, then preserve the useful results in SQLite. It records the normal perf signals, like request throughput, token throughput, TTFT, TPOT, cache hit rate, accept length, and error rate. It also has a place to store human-readable anomalies, because a lot of the interesting bugs are not just "number went down" but "this specific setup behaved strangely in a way a person should inspect."
The important constraint is that the host owns state. Agents do not choose run IDs, write SQLite directly, or decide whether a benchmark should bypass caps. Real experiments go through a benchmark tool. Started runs get logged. Failed runs still count once they actually start. The database is the source of truth for runs, experiments, anomalies, trace references, and compact exploration state.
Current pieces:
- a
perferoxCLI - a Textual TUI for starting and stopping exploration
- a LangGraph main coordinator
- tmux-wrapped benchmark subagents
- Paramiko remote sessions
- structured SGLang
bench_servingcommand construction and parsing - SQLite-backed runs, experiments, anomalies, notifications, and ExplorerState
- local SGLang docs search plumbing
This is still early software. The goal is to keep the code small enough that it stays easy to inspect and change. The preferred path is boring Python, explicit state, small tools, and very few abstractions.
uvx perferox --help
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 perferox-0.1.0.tar.gz.
File metadata
- Download URL: perferox-0.1.0.tar.gz
- Upload date:
- Size: 294.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f3990600583733dca55349321fb8f017f9258f4d0b23dd6dfefbb8c4ade5caf2
|
|
| MD5 |
884ef61d76113145058dc080af04fcc7
|
|
| BLAKE2b-256 |
8d2e6e237a66fb18dda621e07d06d877ded6f42086114814a46ce6f00fe3e0da
|
File details
Details for the file perferox-0.1.0-py3-none-any.whl.
File metadata
- Download URL: perferox-0.1.0-py3-none-any.whl
- Upload date:
- Size: 295.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6de39709381bb5ad9b2ad91fac111ec4b76164a166e71a1e892299ad6ea15764
|
|
| MD5 |
68782843dee357df63d80e80ff88cacc
|
|
| BLAKE2b-256 |
144e3a472ee38fba8c3ca16f556afe88540c83f5d4f97f7a8eaec5a6be2a90e0
|