Stop repeated actions
See how Loop-Guard detects a repeating tool call before adding it to your own runtime.
Try Loop-Guard →Choose a task below. Start in the browser, or open the setup details to add a tool to your own project.
See how Loop-Guard detects a repeating tool call before adding it to your own runtime.
Try Loop-Guard →Check recorded tool calls before merging an agent change. Requires GitHub setup and your own evaluation files.
Set up Ship-Check →See what a prompt could cost before sending it to a model.
Open Prompt Pricer →Compare published results for quality, speed and cost.
Open Benchmark →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.0 downloads checked on .
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.
Estimate token counts and model cost from text or a local file. No account, API key, or model call is needed.
curl -fLO https://github.com/runlog-cc/prompt-pricer/releases/download/v0.3.0/runlog-prompt-pricer-0.3.0.tgz
npm install --global ./runlog-prompt-pricer-0.3.0.tgz
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 →
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.
curl -fLO https://github.com/runlog-cc/loop-guard/releases/download/v0.3.0/runlog_loopguard-0.3.0-py3-none-any.whl
python3 -m venv .venv
.venv/bin/python -m pip install ./runlog_loopguard-0.3.0-py3-none-any.whl
guard.pyfrom 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")
.venv/bin/python guard.py
curl -fLO https://github.com/runlog-cc/loop-guard/releases/download/v0.3.0/runlog-loopguard-0.3.0.tgz
npm install ./runlog-loopguard-0.3.0.tgzThe download includes CommonJS JavaScript and TypeScript declarations; no build step is needed to use it.
guard.cjsconst { 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" });
}
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.
The public v0.3.0 release checks recorded traces and verifies signed gate decisions bound to your evaluation artifacts and commit. Start by running its local tests, then inspect files produced by your own evaluation harness.
curl -fLO https://github.com/runlog-cc/ship-check/releases/download/v0.3.0/ship-check-0.3.0-source.tar.gz
tar -xzf ship-check-0.3.0-source.tar.gz
cd ship-check-0.3.0
python3 runner.py --help
python3 -m unittest discover -s tests
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.
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 v0.3.0 evidence bridge verifies the gate signature and exact artifact and commit bindings. Its decision scope is trace-loop-policy: the gate checks the submitted trace for repeated calls and signs supplied artifact hashes. It does not independently run your agent or verify that a trace came from a real model. Use the release README’s complete offline example and trusted CI workflow; keep gate credentials out of untrusted pull-request code.
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 connects to the hosted trace gate. The old Bench demo is archived and does not power hosted comparisons.
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.