
Treasury Desk
A browser-local crypto treasury demo with payment proposals, two-of-three approvals, revision history, simulated execution and a ledger that records the result.
A command-line tool for testing robots.txt changes and new deployments against URLs found in your server logs. It helps you catch newly blocked pages, broken responses and unexpected indexing changes before putting those changes live.

When checking a new version of a site, you’ll probably open the homepage, a few important pages and whatever you’ve just changed. Meanwhile, crawlers are still requesting an old URL from three migrations ago and a page you’d completely forgotten existed. Conveniently, there’s a record of that.
CrawlReplay uses those logs as the starting point. Give it your current and proposed robots.txt files, and it shows which logged crawler requests would become blocked or allowed under the new rules. Handy when a small cleanup turns out to cover rather more URLs than intended.
For a deployment check, it takes a sample of logged URLs and requests them from both the current site and your preview environment. It compares responses, redirects, canonical URLs and indexing directives, and flags changes to language links, structured-data types and page text.
The question is fairly simple: these URLs are already being requested—what happens to them after this change?
It works with Nginx and Cloudflare Logpush logs, with reports you can read locally or use in an automated workflow. You can set thresholds for newly blocked URLs, new noindex directives and worsening HTTP responses, so those findings can fail a check before a release goes ahead.
It’s written in Rust and is still in early development. The checks cover the logged URLs you feed it and the sample you choose for a deployment comparison, so the logs you use matter.
Added
crawlreplay-core, crawlreplay-import, and
crawlreplay-report crates, plus a binary crate with CLI entry point.policy subcommand that evaluates logged crawler requests against old and
new robots.txt files and reports policy transitions (newly blocked,
newly allowed) with per-crawler severity.release subcommand that fetches baseline and candidate URLs for each
sampled log entry, then compares status codes, redirect chains, canonical
links, indexability directives, hreflang alternates, schema.org types, and
content fingerprints through the comparison pipeline.--baseline-origin and --origin allowlists, so log host fields do
not control outbound network destinations.parse_line() function in crawlreplay-import with automatic
format detection or explicit --log-format
selection, used by both policy and release commands..gz (auto-detected by magic bytes), and stdin.verified, claimed, spoofed, and unknown identity verdicts. Supported
Google common crawlers and Bingbot are checked against exact bundled CIDR
snapshots with documented source timestamps and checksums.robots.txt matching for Allow, Disallow, wildcards, end
anchors ($), longest-match-wins semantics, and empty-disallow-means-allow.status_regression,
baseline_failure, candidate_failure, redirect_changed,
redirect_chain_grew, canonical_changed, canonical_leak,
newly_noindex, newly_blocked, newly_allowed, hreflang_changed,
schema_type_removed, and content_changed.--requests-per-second flag on the release subcommand (default 10.0)
controlling the fetcher rate limit.@type values, and SHA-256 content
fingerprints over visible text.--replay-query-values is an explicit
privacy-sensitive opt-in.--max-urls and --seed.NO_COLOR and TERM=dumb.newly_blocked, status_regression, and
newly_noindex with unique_urls and weighted_requests gates.--thresholds <path> flag on both policy and release subcommands to
load threshold configuration from a JSON file.docs/threshold-schema.json) and
report output (docs/report-schema.json), plus an example threshold file
(docs/threshold-example.json).0 through 5, separating invalid
arguments, imports, network comparison failure, and internal errors.thiserror for core, import, and report layers.parse_line
auto-detection.robots.txt files.action/action.yml) supporting both
policy and release subcommands.External download