Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 23 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ Requires **Node ≥ 22** and ~1.5 GB of free disk on macOS, Linux, or Windows. B
- **More on the way** — the supported list keeps growing, and a PR to add your agent is welcome; see [CONTRIBUTING.md](CONTRIBUTING.md).
- **Interactive setup** — `--interactive` is a plain-text flow; `--wizard` is the full terminal TUI.
- **Defer downloads** — `--no-warmup` waits until first use. A failed component download never fails setup; init reports what's not ready with the exact fix and still completes.
- **One free account** — the tools need an activated install, so `init` closes by pointing at `wigolo register`. `wigolo login` signs in a machine you've already got an account for. Diagnostics work without either. See [account & telemetry](#account--telemetry).
- **No account required** — every tool runs on a fresh install with no sign-up at all. `init` closes by naming what a free account would *add* (sync, marketplace, higher pacing and watch limits); `wigolo register` takes it when you want it. See [account & telemetry](#account--telemetry).

`init` is unattended by default, so it's safe in scripts and CI, and any setup problem surfaces right here in the per-component report, before your agent's first call. **Search, fetch, crawl, extract, cache, and find-similar work with no API key.** Check it's healthy anytime:

Expand Down Expand Up @@ -117,7 +117,7 @@ wigolo isn't a free stand-in for the paid tools — it's built to match them. It
- **Built for agents.** One MCP call fans out many queries across many engines in parallel, which a serial host tool-loop can't replicate. Every result carries transparent per-result scoring, and output is budget-aware.
- **Honest output.** Stale cache, failed fetches, degraded backends, and truncation are surfaced in the result. When a bot-protected page can't be read, you get a labeled `blocked_by_challenge` failure, not a challenge shell returned as content.
- **$0 per query, free to re-query.** Default search talks to public engines through direct adapters; the reranker and embeddings run on-device. Every response is cached, so asking again is instant and costs nothing.
- **Private by default.** Your queries and target URLs reach the engines and sites you're asking about — that's the product working. Nothing else about your work leaves: cache, embeddings, models, and config stay under `~/.wigolo/`, and no third party sees them unless you explicitly opt into an LLM for synthesis. [Full egress list](docs/privacy-security.md#network-egress).
- **Private by default.** Your queries and target URLs reach the engines and sites you're asking about — that's the product working. Beyond that: no page content, URLs, or credentials leave your machine; usage stats do, off with one flag. Cache, embeddings, models, and config stay under `~/.wigolo/`, and no third party sees them unless you explicitly opt into an LLM for synthesis. [Full egress list](docs/privacy-security.md#network-egress).

Here's what one real result looks like, dissected. It includes the failed engine and the weak result, because those are part of the answer too:

Expand Down Expand Up @@ -301,10 +301,17 @@ flowchart TD

## Account & telemetry

The ten tools need an activated install. `npx wigolo register` creates a free account from
an email address and a mailed sign-in code — no password, no card, nothing to buy. Five
verbs own it, separate from `wigolo auth`, which is about signing in to *websites* through
the browser engine:
**wigolo runs fully without an account — registering only adds to it.** All ten tools work
on a fresh install, on every surface, with no sign-up. What an account unlocks:

- sync — your cache, settings and watches across machines
- marketplace — publish and install skills and plugins
- higher pacing and watch limits
- managed cloud runs, when they land

`npx wigolo register` creates one from an email address and a mailed sign-in code — no
password, no card, nothing to buy. Five verbs own it, separate from `wigolo auth`, which is
about signing in to *websites* through the browser engine:

```bash
npx wigolo register # create the account and activate this machine
Expand All @@ -314,12 +321,16 @@ npx wigolo account # summary, grants, telemetry state, export, delete
npx wigolo logout # clear the local credential only
```

Activation is verified offline against a signed token on disk, so ordinary runs never call
the service and a network outage cannot de-activate you. Diagnostics are never gated:
`doctor`, `verify` and `warmup` run on a machine that has never registered.
Once you have registered, the sign-in is verified offline against a signed token on disk, so
ordinary runs never call the service and a network outage cannot cost you the unlocks.
`register --headless` is the agent-assisted path: an agent mails itself the code and
finishes with `wigolo register --code`, so nothing ever waits on a prompt.

The honest one-liner, and the same words the CLI and your agent see: **no page content,
URLs, or credentials leave your machine; usage stats do, off with one flag.**

**Usage and reliability telemetry is on by default**, which is a change in 0.3.0 — earlier
releases sent nothing. It is six counters and no seventh: a tool ran (which one, which
**Usage and reliability telemetry is on by default** for a registered install, which is a
change in 0.3.0 — earlier releases sent nothing. It is six counters and no seventh: a tool ran (which one, which
surface, whether it worked, how long as a coarse bucket), a tool failed (its error
*class*), a fetch was blocked (the registrable domain and why), a fetch escalated a tier,
a search engine failed (its error *class*), and a daemon's uptime as a bucket. Every field
Expand Down Expand Up @@ -392,7 +403,7 @@ The full guide covers per-symptom fixes, a "what still works when X fails" map,
<details>
<summary><b>Free? What's the catch?</b></summary>

No catch by design. The expensive parts (ranking, embeddings, the browser engine) run on *your* hardware, so there's no per-query cost to recover and no reason for a meter. It's sustained by donations, and the AGPL license legally prevents a switch into a closed hosted product. Since 0.3.0 the tools do need a free account an email address and a mailed code, no card — which is what makes [usage and reliability telemetry](#account--telemetry) attributable; there is still nothing to buy.
No catch by design. The expensive parts (ranking, embeddings, the browser engine) run on *your* hardware, so there's no per-query cost to recover and no reason for a meter. It's sustained by donations, and the AGPL license legally prevents a switch into a closed hosted product. You don't need an account either — every tool runs on a fresh install. A free account (an email address and a mailed code, no card) unlocks sync, the marketplace and higher limits, and is what makes [usage and reliability telemetry](#account--telemetry) attributable; there is still nothing to buy.

</details>

Expand Down
42 changes: 29 additions & 13 deletions docs/cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,28 +162,44 @@ Five verbs, separate from the management commands above because they concern you
rather than this machine's setup. Not to be confused with [`wigolo auth`](#auth), which
manages site sign-ins for the browser engine.

All ten tools are gated on an activated install. Diagnostics are not: `doctor`, `verify`
and `warmup` run on a machine that has never registered, so a broken install can always be
diagnosed. Everything that reaches a tool — the MCP server, the REST daemon, the
interactive shell, a one-shot tool command — refuses with the same line until you activate:
**No tool is gated on an account.** All ten run on a machine that has never registered, on
every surface — the MCP server, the REST daemon, the interactive shell, a one-shot tool
command — and so do `doctor`, `verify` and `warmup`. Registering *unlocks* things instead:
sync across machines, the marketplace, higher pacing and watch limits, and managed cloud
runs when they land. An unregistered install is told that exactly once, in a footer under a
tool result that already succeeded, and never again.

```text
wigolo needs an account — run `wigolo register` to create one (already have one? `wigolo login`).
```
Telemetry, in the words every surface uses: no page content, URLs, or credentials leave
your machine; usage stats do, off with one flag (`WIGOLO_TELEMETRY=off`).

### register

```text
wigolo register [--email E] [--json]
wigolo register [--email E] [--code C] [--headless] [--marketing-consent] [--json]
```

Creates your account and activates this install. It asks for your email address, mails a
Creates your account and unlocks it on this install. It asks for your email address, mails a
sign-in code and waits for you to type it back; then — still before the account exists —
shows what usage and reliability telemetry covers and asks whether you want occasional
product-update emails. No password at any point. If the account service is unreachable
when the disclosure is fetched, registration stops and nothing is created: the wording
being agreed to is served, never bundled into the client, so there is no offline
substitute to show you.
product-update emails. That last question is **unticked by default**: consent is an
affirmative act, so anything other than an explicit yes is a no. No password at any point.
If the account service is unreachable when the disclosure is fetched, registration stops and
nothing is created: the wording being agreed to is served, never bundled into the client, so
there is no offline substitute to show you.

**`--headless` is the agent-assisted path**, and it asks nothing — there is no prompt to
hang on, which is what makes it safe inside an agent loop. It runs in two stages:

```bash
wigolo register --headless --email you@example.com # mails the code; creates nothing
wigolo register --headless --email you@example.com --code 123456 # the human relays the code
```

Stage one creates no account and carries no consent. The human reads the code out of their
own inbox and hands it back, so the person who owns the address is the person who claims the
account. `--marketing-consent` is the only way to say yes to product-update email on this
path; omitting it — and the explicit `--no-marketing-consent` — both mean no. `wigolo login`
takes the same two flags for signing an existing account in.

### login

Expand Down
44 changes: 26 additions & 18 deletions docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,27 @@ Useful variants:
- `npx wigolo init --wizard` — the rich guided setup TUI.
- `npx wigolo init --json` — machine-readable summary on stdout.

When setup finishes on a machine that has no wigolo account yet, `init` closes with the
next step:
When setup finishes on a machine that has no wigolo account yet, `init` closes by saying so
— and by saying it changes nothing about whether the tools work:

```text
Next step: run `wigolo register` to activate this install (already have an account? `wigolo login`).
wigolo runs fully without an account — registering only adds to it.
Optional — `wigolo register` unlocks:
· sync — your cache, settings and watches across machines
· marketplace — publish and install skills and plugins
· higher pacing and watch limits
· managed cloud runs, when they land
Telemetry: no page content, URLs, or credentials leave your machine; usage stats do, off with one flag (WIGOLO_TELEMETRY=off).
```

## 2. Activate this install
## 2. An account, if and when you want one — optional

The ten tools need an account. Create one — it takes an email address and a sign-in code,
**Skip this section and everything still works.** All ten tools, on every surface, run on a
machine that has never registered, and so do `doctor`, `verify` and `warmup`. Nothing is
gated.

A free account unlocks sync across machines, the marketplace, higher pacing and watch
limits, and managed cloud runs when they land. It takes an email address and a sign-in code,
no password:

```bash
Expand All @@ -43,19 +54,16 @@ npx wigolo register

`register` asks for your email, mails a sign-in code, and waits for you to type it back.
Before the account is actually created it shows what usage and reliability telemetry
covers and asks whether you want occasional product-update emails — then activates this
machine. Already have an account? `npx wigolo login` signs this machine in instead.

Until then every tool refuses with the same line, whichever surface it was called from:

```text
wigolo needs an account — run `wigolo register` to create one (already have one? `wigolo login`).
```

Diagnostics stay available while unactivated — `doctor`, `verify` and `warmup` run on a
machine that has never registered, so a broken install can still be diagnosed. See
[Account & telemetry](../README.md#account--telemetry) for what is collected and how to
turn telemetry off.
covers and asks whether you want occasional product-update emails — that question is
unticked by default. Already have an account? `npx wigolo login` signs this machine in
instead. Inside an agent loop, `npx wigolo register --headless --email you@example.com`
mails the code without ever waiting on a prompt; the human reads it from their own inbox and
finishes with `--code`.

An unregistered install says all of this exactly once — in a footer under a tool result that
already worked — and then never again. See
[Account & telemetry](../README.md#account--telemetry) for what telemetry collects and how
to turn it off.

## 3. First search — through your agent

Expand Down
18 changes: 13 additions & 5 deletions docs/privacy-security.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,18 @@ wigolo's privacy model is structural, not a policy promise: the software runs on
machine, stores on your disk, and the only thing it can report is a closed list of counters
that page content, queries and URLs are not representable in.

As of 0.3.0 there is one vendor backend — the account service that activates your install
and receives usage and reliability telemetry. What it can receive is bounded by the code,
not by a promise, and the telemetry half is a single switch away from silent. Both are
below.
As of 0.3.0 there is one vendor backend — the account service that registers you and
receives usage and reliability telemetry. What it can receive is bounded by the code, not by
a promise, and the telemetry half is a single switch away from silent. Both are below.

The claim in one sentence, and it is the same sentence the CLI, the first-run output and
your agent are shown: **no page content, URLs, or credentials leave your machine; usage
stats do, off with one flag.** Earlier copy said nothing left your machine at all. That was
never true of the counters and the wording is retired; what follows is the exact list.

No tool is gated on an account — a machine that has never registered runs all ten — and an
install with no account reports nothing at all, because counters are attributed to an
account or not collected ([below](#usage-and-reliability-telemetry)).

## Everything stays local

Expand Down Expand Up @@ -103,7 +111,7 @@ wigolo config --set WIGOLO_TELEMETRY=off # permanently
```

`off`, `no`, `false` and `0` all mean off. Off means nothing is queued, nothing is written
to `telemetry/`, and nothing leaves the machine — the switch is read before an event is
to `telemetry/`, and no counter reaches the wire — the switch is read before an event is
built, not before a batch is sent. Nothing is queued or sent on an install that has never
registered either, because there is no account to attribute counters to.

Expand Down
Loading
Loading