webctl
MIT License / Early Development

Turn any website into an installable CLI for AI agents.

webctl runs one LLM pass during recon. After that, your agent runs the generated CLI with zero tokens at runtime.

Built on agent-browser. Emits just-bash ExecutorConfigs. Composable, not competing.

Install
$ cargo install webctl
The bet

One recon pass. Forever free.

Most agent runtimes
  • Browser UseCalls LLM on every page load
  • StagehandLLM-driven DOM extraction per visit
  • OperatorContinuous vision + reasoning loop
Cost: tokens on every invocation
webctl
  • reconOne LLM pass to map the site into an IR
  • emitCompile IR into a typed CLI binary + just-bash ExecutorConfig
  • runAgent calls the CLI, zero LLM calls, zero DOM parsing
Cost: tokens once. Runtime: zero.
In practice

From URL to structured output.

Step 1 of 2 - reconnaissance + emit

$ webctl recon https://news.ycombinator.com --auto
Launching agent-browser...
Crawling: https://news.ycombinator.com
Classifying DOM structure...
Detected: news-listing, pagination, story-metadata
Running LLM pass (1 call)...
Writing IR to ~/.webctl/news-ycombinator-com.ir.json
Emitting CLI binary...
Installing to ~/.cargo/bin/news-ycombinator-com
Done in 4.2s. LLM calls: 1.
LLM calls: 1 total. Tokens spent once, never again.
Architecture

Crate breakdown.

webctl-ir

Intermediate representation. JSON schema for site actions, params, selectors, and types.

webctl-probe

Recon engine. Drives agent-browser, runs the single LLM pass, writes the IR.

webctl-classifier

DOM classifier. Labels page regions as listing, form, detail, pagination, etc.

webctl-emit-cli

Code generator. Reads IR, emits a typed Clap CLI binary and a just-bash ExecutorConfig.

webctl-install

Installer. Compiles the emitted CLI and places it on PATH via cargo install.

Status:early development, all crates unstable|License:MIT|Language:Rust