Put safety & cost checks around your agent.
Zero hosted lock-in, zero required accounts. Drop our lightweight Python and TypeScript checks directly into your agent runtime, terminal, and CI pipeline.
Verified installation examples and release checks
Use the released packages and runnable commands below. Download links and checksums correspond to the same reviewed release.
Install in your project
Requirements, release version and download verification
Commands below use macOS, Linux, or a Windows WSL terminal. The install commands download the release file into your current directory before installing it. These examples use the public 0.3.1 downloads checked on .
Check a downloaded file
Each release includes a SHA256SUMS file. Compare the hash of your download with its matching entry before installing. On Linux, use sha256sum filename; on macOS, use shasum -a 256 filename.
Prompt Pricer
Estimate token counts and model cost from text or a local file. No account, API key, or model call is needed.
CLI installation and example
Install the download
curl -fLO https://github.com/runlog-cc/prompt-pricer/releases/download/v0.3.1/runlog-prompt-pricer-0.3.1.tgz
npm install --global ./runlog-prompt-pricer-0.3.1.tgz
Try a prompt
runlog price --currency USD --models gpt-4o "Summarize a short note."
The terminal prints estimated input tokens and cost. Read a file with --file ./prompt.md or pipe text with --stdin; runlog --help lists the supported options.
The CLI runs offline and prints locally. Its bundled provider snapshot is dated; unmatched legacy reference prices are labelled unknown-date. Output and thinking tokens are assumptions, and EUR uses a dated reference conversion. Add --json --turns 3 --output-tokens 500 for machine-readable provenance and cumulative conversation cost.
Prefer the browser? Open Prompt Pricer →
Loop-Guard
Put a guard immediately before and after your actual tool calls. The examples below print a local lookup twice, then stop the repeated call. They do not call an AI provider.
Choose your language: Python setup · Node.js setup.
SDK downloads, setup and integration limits
Python setup and example
Create an environment and install the wheel
curl -fLO https://github.com/runlog-cc/loop-guard/releases/download/v0.3.1/runlog_loopguard-0.3.1-py3-none-any.whl
python3 -m venv .venv
.venv/bin/python -m pip install ./runlog_loopguard-0.3.1-py3-none-any.whl
Save as guard.py
from loopguard import CircuitBreaker, CircuitTrippedError, TripPolicy
guard = CircuitBreaker(policy=TripPolicy(max_consecutive_retries=3))
for attempt in range(3):
try:
guard.before_tool_call("lookup", {"id": 7})
except CircuitTrippedError:
print("Stopped repeated lookup.")
break
print("Lookup ran.")
guard.after_tool_call("lookup", {"id": 7}, result="ok")
Run it
.venv/bin/python guard.py
Node.js / TypeScript setup and example
Install the compiled package in your project
curl -fLO https://github.com/runlog-cc/loop-guard/releases/download/v0.3.1/runlog-loopguard-0.3.1.tgz
npm install ./runlog-loopguard-0.3.1.tgzThe download includes CommonJS JavaScript and TypeScript declarations; no build step is needed to use it.
Save as guard.cjs
const { CircuitBreaker, CircuitTrippedError } = require("@runlog/loopguard");
const guard = new CircuitBreaker({ policy: { maxConsecutiveRetries: 3 } });
for (const attempt of [1, 2, 3]) {
try {
guard.beforeToolCall("lookup", { id: 7 });
} catch (error) {
if (!(error instanceof CircuitTrippedError)) throw error;
console.log("Stopped repeated lookup.");
break;
}
console.log("Lookup ran.");
guard.afterToolCall({ toolName: "lookup", args: { id: 7 }, result: "ok" });
}
Run it
node guard.cjs
The SDK runs inside your application. These examples keep their state in memory and print only to your terminal. Provider integrations and alert webhooks send data when you configure them. Budget checks depend on observed usage and reference prices; they cannot prevent every upstream charge. Metadata ingestion and incident history belong to the deferred Teams legacy pilot, not the public tools.
Ship-Check
The public v0.3.1 release checks recorded traces offline, without an account or API key. Start with a working pass/fail example, then use records from your own evaluation harness. Signed-gate verification is a separate existing-pilot mode.
Local setup and examples
Verify the checksum and unpack
Use sha256sum on Linux, or replace it with shasum -a 256 -c on macOS (without --check). Continue only if verification succeeds.
curl -fLO https://github.com/runlog-cc/ship-check/releases/download/v0.3.1/ship-check-0.3.1-source.tar.gz
curl -fLo ship-check-SHA256SUMS https://github.com/runlog-cc/ship-check/releases/download/v0.3.1/SHA256SUMS
awk '$2 == "ship-check-0.3.1-source.tar.gz" {print; found=1} END {if (!found) exit 1}' ship-check-SHA256SUMS > ship-check-selected.SHA256SUMS
sha256sum --check ship-check-selected.SHA256SUMS && tar -xzf ship-check-0.3.1-source.tar.gz
cd ship-check-0.3.1
python3 runner.py --help
python3 -m unittest discover -s tests
Inspect your recorded trace offline
Put your version 1 scenario suite in scenarios.json and its recorded tool trace in candidate.json. The release README defines their exact shapes. This command calls the local evaluator directly:
python3 -c 'from runner import evaluate, load_json; print(evaluate(load_json("scenarios.json"), load_json("candidate.json")))'Passing prints a dictionary of scenario, step, and cost totals; invalid records raise an error. The files are read locally and no gate request is sent.
Phase 2: existing hosted gate integrations
Supply RUNLOG_TOKEN securely in your environment, then run this from the extracted directory with your own evaluated files:
python3 runner.py --scenarios scenarios.json --trace candidate.jsonThis command sends the trace, scenario assertions, and token to the configured HTTPS gate. This low-level runner requests a trace-policy decision; use the evidence bridge in the README for signature verification. The default is https://runlog.cc/api/v1/gate. It needs network access and a valid RunLog API key; local checks alone do not grant release approval. The signed decision scope is trace-loop-policy, not independent evaluation of answer quality. The optional evidence bridge verifies the gate signature and exact artifact and commit bindings.
The offline checker evaluates the records you supply; it does not independently run your agent or prove their origin. Use the release README’s complete pass/fail example before adapting the tool to your own harness and CI. Signed verification is documented separately for existing provisioned integrations.
Release manifest and runtime compatibility
Release manifest and source hashes. Runtime compatibility: the browser Pricer and CLI share the same estimator and snapshot. Legacy Studio uses a separate conservative execution estimate and account spend reservations. Loop-Guard runs locally; its website page is a demonstration. Ship-Check runs offline; signed hosted-gate verification is a separate existing-pilot mode. The old Bench demo is archived and does not power hosted comparisons.
Existing-account previews
Benchmark has no public local package. Private advanced comparisons, Workspace and Teams are deferred from the public launch. Existing advanced comparisons and Workspace remain accessible to authorized accounts. Hosted runs send prompts to providers; reports remain private to your account. See legacy access and the current guide.