OverView of a web app
Project description
ov
OverView — point it at a URL and it drives the web app like a user, records what the app does (pages, DOM, screenshots, network, console, journey) and what it's made of (HTML, JS, frameworks, API surface), then analyzes both for UX and software architecture and writes Markdown reports plus a single synopsis.
import ov
run = ov.observe("https://example.com") # capture (zero config)
print(run.fingerprint) # detected technologies
print(len(run.artifacts), "artifacts captured")
ov observe https://example.com # same, from the shell
ov check # what system deps are present
ov is a tool + skill library with a deterministic, model-free core. The
near-term "agent" that orchestrates it is a host agent (Claude Code) following
the skills in .claude/skills/ — ov supplies the hands (drive the target) and
eyes (observe + analyze); the host supplies the control loop. Everything in the
core runs with no model and no host, so it's testable, cheap, and repeatable.
Install
pip install -e . # the package
playwright install chromium # the browser it drives (required for capture)
The arch/API reconstruction and evidence layers have optional extras
(pip install -e ".[arch,evidence]") and an optional Node sidecar; run
ov check (or ov.check_requirements()) to see what's present and how to
install what's missing.
What it captures
Capture is organized into probes — independent, registerable units that each write typed artifacts into a content-addressed store:
- Behavioral:
navigation,network(request/response + size-capped bodies),dom(serialized DOM + ARIA snapshot + full AX tree),screenshot,console,perf,storage,websocket,sse. - Static:
fingerprint(framework/library detection),assets(inventory).
The five operate primitives — observe / act / journal / progress /
snapshot_state — are the deterministic, LLM-free "hands" the host (or a scripted
driver) uses to drive a journey; the journey trace is the UX evidence.
The facade
| Function | What it does |
|---|---|
ov.observe(url) |
Drive + capture → CaptureRun (persisted to a store) |
ov.analyze(run) |
Deterministic UX + architecture analyzers → findings (Phase 2) |
ov.report(run) |
Render Markdown report sections (Phase 2) |
ov.synopsis(dir) |
Aggregate reports into one synopsis (Phase 2) |
ov.overview(url) |
The one-liner: observe → analyze → report → synopsis (Phase 2) |
The CLI mirrors these: ov observe|analyze|report|synopsis|overview|check|runs.
Authorization & privacy
ov analyzes publicly served frontend material and observable network behavior
of targets you are authorized to inspect. Foreign-target runs require an
explicit authorized=True acknowledgement; secret/PII capture is off by default
and storage values are redacted. It does not defeat access controls.
Status
Built in phases (see the GitHub issues). Phase 1 (capture spine + operate primitives) is implemented; Phases 2–3 (deterministic analysis + reports, then the host-agent skill layer) follow. In-package agents are an optional, deferred Phase 4.
Author: Thor Whalen.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ov-0.1.1.tar.gz.
File metadata
- Download URL: ov-0.1.1.tar.gz
- Upload date:
- Size: 192.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
406986729bed6b6b15752e9b28bdc6084a40f810e11844f3af1df09e20baf1b6
|
|
| MD5 |
ff9a0441388ce8eb05e593ce95535675
|
|
| BLAKE2b-256 |
a0101a7afccb6d15c7c16ed72c14bf11e93b8ddb9503256c9d742dafcbc47c74
|
File details
Details for the file ov-0.1.1-py3-none-any.whl.
File metadata
- Download URL: ov-0.1.1-py3-none-any.whl
- Upload date:
- Size: 107.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45cfa8f7ac0a45a6ed04045b089cced177d4f46257128acb4e353f04b7dba74b
|
|
| MD5 |
9ea62112a48a48680a514a7321782269
|
|
| BLAKE2b-256 |
0f52f2378e9c6e989a64e00ddf2eafd53aaf5e5f50fcd6a301c434aaf9fe5ab8
|