# Frequently asked questions Lifted out of the README so that file stays readable. Everything here is the same text, with its links repointed.
Do I need an API key, an account, or a subscription? No third-party account, API key or subscription is required by Svipall itself. The destination site may require authorization. Browser provisioning can occur automatically when enabled; blocklists, a configured DNS resolver, page resources and browser background traffic can also contact remote servers. See [Privacy and safety](#privacy-and-safety).
Which platforms does it run on? Windows, macOS and Linux. CI runs the shared checks on all three, with the platform-specific steps listed in [Development](#the-gate), and tagged releases attach binaries for **Windows x86-64, macOS Intel, macOS Apple silicon, Linux x86-64 and Linux arm64**, with a `sha256sums.txt` and a build attestation. Install them with a one-line script, with Homebrew or Scoop, from a `.deb` or `.rpm` where available, through npm, or as a container image on `ghcr.io`. [docs/install.md](install.md) has the platform details. The winget and AUR manifests are packaging preparation, not confirmed published installation channels. The checked release has five binary targets. The current workflow's model matrix is below. Browser operation also depends on an installed compatible browser, OS libraries and a usable display for headful tiers. A package's existence does not establish full functionality on every host. | Platform | Published binary target | Browser provisioning | Model-enabled binary job | |---|---|---|---| | Windows x86-64 | yes | managed download or detected compatible browser | yes | | macOS Apple silicon | yes | managed download or installed browser | yes | | macOS Intel | yes | managed download or installed browser | no | | Linux x86-64 | yes | managed download or installed browser | no | | Linux arm64 | yes | operator-installed Chromium via `browser_path` | no | | Windows arm64 | no native target in the release matrix | x64 emulation was not validated in this audit | no | The workflow omits ONNX models from Linux and Intel-Mac binaries to accommodate the runtime distributions it uses. The full Linux container supplies its own libraries and uses Debian's Chromium on arm64. It is an option for those omitted components, with the headful-runtime limitations described in [the container section](#or-run-it-in-a-container). **A binary without models can still attempt non-model strategies.** Token widgets may clear in the browser, or may demand further challenges. Proof-of-work, slider, rotation, drag and hold strategies do not require ONNX weights. Model-dependent paths need compatible models or usable human assistance. Neither path guarantees acceptance. `svipall doctor` reports whichever limitation applies to the machine it is on. On Windows, keep `CARGO_TARGET_DIR` short when building from source: BoringSSL's paths run into `MAX_PATH`.
Can I use it without an AI agent? Yes, two ways. Completed `svipall` data commands print one JSON object, so `| jq` works; help is written to stderr and `serve` is a long-running server. The `svipall serve` command puts nineteen of the twenty-nine MCP tools behind a local REST API that any language can drive. MCP is one front end of three, not the product.
Will it get my IP blocked? It can, and the tool is built around that being the scarce resource. Top-level attempts are paced per domain and exit, a persistent visit window limits bursts, full `Retry-After` backoff is kept, a hard block puts the domain on a 15-minute cooldown, and a reputation ledger tracks what each address has spent with each host and decays it with a six-hour half-life. Two crawls of the same site cannot run at once for exactly this reason. None of that makes you invisible. This project's own benchmark has watched a home address get worse at three targets over a day of runs, and [published it](#anti-bot-vendors8-four-vendors-named-two-targets-each).
Does my data leave my machine? Svipall stores its cache, crawl state, cookies, profiles and captcha corpus locally under `~/.svipall` (or `SVIPALL_HOME`). Web requests still reach remote sites, including credentials or form input you submit, and results go to your connected agent or client. Native fallback can expose real browser/device characteristics. There is no Svipall telemetry or cloud sync. See [Privacy and safety](#privacy-and-safety) for downloads, browser traffic and configuration.
Will it get past Cloudflare / DataDome / Akamai / PerimeterX? Sometimes, and the [Proof](#proof-every-number-with-the-command-that-reproduces-it) section says which historical configurations passed and how often, with the raw logs committed. On `public31`, Turnstile cleared on the `real` tier at nowsecure-cf in 2.7, 1.7 and 1.7 seconds, and did not clear at canadianinsider, which stayed gated on `http` in all three runs. Other outcomes varied across visits. The recorded DataDome browser visits returned a blocked-visitor interstitial, while bare HTTP on the same address received a different challenge: those observations do not isolate the cause to the IP address. `web_route` can try an exit you supply, without guaranteeing acceptance. The [2026-09-06 automatic-policy snapshot](../bench/experiments/automatic-public-20260906/README.md) reports delivery-check rates and content limitations on `dd8a304` and predates the browser directory/shutdown fix in `e60e10b`.
How is this different from the fetch tool my agent already has? Take Claude Code's `WebFetch`, since it is the one most people already have. Its own documentation describes what it does: it fetches the URL, converts the page to Markdown, and answers **your prompt** against that Markdown with a small, fast model. What reaches the conversation is the small model's answer. The page itself never does. That is genuinely convenient. Nothing to install, and a page you wanted one number from never fills the context. It is also where the limits come from. A second question about the same page is a second fetch, you cannot quote a line nobody thought to ask for, authenticated URLs and hostnames without a dot are refused, and a cross-host redirect is handed back to the agent rather than followed. Its documentation describes no notion of an anti-bot wall, so a "checking your browser" page is Markdown like any other and gets summarised as though it were the article. Svipall gives the agent the content itself, with labels attached: a `blocked_reason` when a wall answered instead of the page, quality and duplicate observations when it did not ([details](features.md#judging-what-came-back)). Around it sit the jobs a single-page fetch does not cover: a tier ladder with per-domain memory, local captcha attempts, a login that persists across pages, `web_map` and `web_crawl`, tables as rows, `out_file` for a result too big to put in a conversation, and three search engines queried from this machine and merged. Trimming is still there when you want it, as `query=`, `css_selector` or `max_tokens`, but it is not the only mode. The honest cost: Svipall is a program to install, update and keep running, where the built-in tool is already there. Neither one can promise a given site will let it in.
Is it a Firecrawl / Crawl4AI / Scrapling / Playwright MCP replacement? There is overlapping functionality, but this repository has not established a current head-to-head winner. The [comparison](#how-svipall-compares) describes documented project scope. Svipall focuses on local operation, content labels, bounded routing and local challenge attempts. Compatibility, completeness and success still need validation on your workload.
Is scraping legal? That depends on the site, the data and where you are, and it is your call rather than this project's. Svipall grants you **no authorisation with respect to any system you point it at**. Read [`DISCLAIMER.md`](../DISCLAIMER.md) before you run it against something that is not yours. It evades bot detection on public pages. It does not crack passwords, bypass paywalls or forge authentication.
Do I need a GPU? No GPU is required for the supplied CPU model paths. Availability depends on the build and installed weights. Browser software rendering can affect fingerprint consistency, and `web_status` reports detected limitations without proving how a site will classify them.
Why Rust? Native executables, low parsing cost in the [measured fixture](#cpu-budgets--measured-not-recalled), and BoringSSL linked directly for browser-like TLS handshakes. Windows packages carry the required Visual C++ runtime DLLs beside the executables; no Node or Python runtime is needed to run them.
How do I say it? *SVEE-pahl.* See below.
---