JasonHonKL/PardusBrowser: A browser designed for agent · GitHub

A headless browser built for AI agents. No pixels, no screenshots – just structured semantic positions.

$ pardus-browser navigate https://example.com

00:00  pardus-browser navigate https://example.com
00:05  connected — parsing semantic state…
       document  [role: document]
       └── region  [role: region]
           ├── heading (h1)  "Example Domain"
           └── link  "Learn more"  → https://iana.org/domains/example
00:05  semantic tree ready — 0 landmarks, 1 links, 1 headings, 1 actions
00:05  agent-ready: structured state exposed · no pixel buffer · 0 screenshots

AI agents don’t need screenshots. They need to know what’s on the page, who they can interact with, and where they can go. pardus-browser Fetches a URL, parses the HTML, and outputs a clean semantic tree – landmarks, headings, links, buttons, forms and their functions – in milliseconds, not seconds.

No chromium binary. No docker. No GPU. Just HTTP + HTML parsing.

  • semantic tree output – ARIA roles, titles, landmarks, interactive elements
  • 3 output formats – Markdown (default), tree, JSON
  • navigation graph – Form descriptor with internal routes, external links, fields
  • interactive-only mode – Remove static content, show only functional elements
  • action comments – Tagged with each interactive element navigate, click, fill, toggleOr select
  • Fast – HTTP GET + HTML parse, usually less than 200ms
  • Zero dependency on Chrome – Pure Rust, no browser binaries required

From source (requires Rust 1.85+):

git clone https://github.com/user/pardus-browser.git
cd pardus-browser
cargo install --path crates/pardus-cli
# Default: Markdown tree
pardus-browser navigate https://example.com

# Raw tree format
pardus-browser navigate https://example.com --format tree

# JSON with navigation graph
pardus-browser navigate https://example.com --format json --with-nav

# Only interactive elements
pardus-browser navigate https://example.com --interactive-only

# Custom headers
pardus-browser navigate https://api.example.com --header "Authorization: Bearer token"

# Verbose logging
pardus-browser navigate https://example.com -v

Markdown (default) – Clean semantic tree with role annotations:

document  [role: document]
├── banner  [role: banner]
│   ├── link "Home"  → /
│   ├── link "Products"  → /products
│   └── button "Sign In"
├── main  [role: main]
│   ├── heading (h1) "Welcome to Example"
│   ├── region "Hero"
│   │   ├── text "The fastest way to build"
│   │   └── link "Get Started"  → /signup
│   └── form "Search"  [role: form]
│       ├── textbox "Search..."  [action: fill]
│       └── button "Go"  [action: click]
└── contentinfo  [role: contentinfo]
    ├── link "Privacy"  → /privacy
    └── link "Terms"  → /terms

JSON – Structured data with full navigation graphs:

pardus-browser navigate https://example.com --format json --with-nav

Return:

{
  "url": "https://example.com/",
  "title": "Example Domain",
  "semantic_tree": {
    "root": { "role": "document", "children": [...] },
    "stats": { "landmarks": 4, "links": 12, "headings": 3, "actions": 2 }
  },
  "navigation_graph": {
    "internal_links": [
      { "url": "/products", "label": "Products" },
      { "url": "/signup", "label": "Get Started" }
    ],
    "external_links": ["https://github.com/..."],
    "forms": [
      {
        "action": "/search",
        "method": "GET",
        "fields": [
          { "name": "q", "field_type": "text", "action": "fill" },
          { "name": "go", "field_type": "submit", "action": "click" }
        ]
      }
    ]
  }
}
# Wipe everything
pardus-browser clean

# Only cookies
pardus-browser clean --cookies-only

# Only cache
pardus-browser clean --cache-only
pardus-browser
├── crates/pardus-core    Core library — HTML parsing, semantic tree, navigation graph
├── crates/pardus-cdp     CDP WebSocket server (planned)
└── crates/pardus-cli     CLI binary

sorry-core – engine. brings page through reqwestparses html scraperARIA creates a semantic tree mapping roles and interactive situations. Output Markdown, Tree, or JSON.

pardus-cdp – Chrome DevTools Protocol Server (planned). Will expose a WebSocket endpoint for Playwright/Puppet integration, enabling JS-rendered pages and real-time interactions.

pardus-cli – The pardus-browser Command-line tools.



<a href

Leave a Comment