Skip to main content

Crate headless_engine

Crate headless_engine 

Source
Expand description

§Headless Engine

An ultra-lightweight (<30MB RAM), detection-free pure-Rust headless browser engine architected specifically for AI agents, web scraping, and Go-based MCP servers.

§Quick Start (Rust SDK)

use headless_engine::{BrowserTab, DeviceProfile};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let mut tab = BrowserTab::with_profile(DeviceProfile::ChromeWindows)?;
    let report = tab.navigate("https://en.wikipedia.org/wiki/Rust_(programming_language)").await?;
    println!("Title: {}", report.page_title);

    let markdown = tab.extract_markdown(None).unwrap();
    println!("Clean LLM Markdown:\n{}", markdown);

    Ok(())
}

§Multi-Tab Engine Example

use headless_engine::{BrowserEngine, DeviceProfile};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let mut engine = BrowserEngine::new()?;
    let tab1 = engine.create_tab(Some(DeviceProfile::ChromeWindows))?;
    let tab2 = engine.create_tab(Some(DeviceProfile::SafariIos))?;

    engine.get_tab_mut(&tab1).unwrap().navigate("https://news.ycombinator.com/").await?;
    engine.get_tab_mut(&tab2).unwrap().navigate("https://google.com/").await?;

    Ok(())
}

Re-exports§

pub use api::rpc::JsonRpcHandler;
pub use api::rpc::RpcError;
pub use api::rpc::RpcRequest;
pub use api::rpc::RpcResponse;
pub use browser::builder::BrowserBuilder;
pub use browser::engine::BrowserEngine;
pub use browser::engine::TabSummary;
pub use browser::tab::BrowserTab;
pub use browser::tab::NavigationReport;
pub use dom::markdown::HtmlToMarkdown;
pub use dom::AiOverview;
pub use dom::DomTree;
pub use dom::FormInfo;
pub use dom::FormInputInfo;
pub use dom::ImageResult;
pub use dom::InteractiveElement;
pub use dom::InteractiveParser;
pub use dom::KnowledgePanel;
pub use dom::LinkInfo;
pub use dom::NewsResult;
pub use dom::OrganicResult;
pub use dom::PageObservation;
pub use dom::PageRenderer;
pub use dom::ScreenshotResult;
pub use dom::SearchResults;
pub use dom::VideoResult;
pub use network::fingerprint::DeviceProfile;
pub use network::fingerprint::Fingerprint;
pub use render::HtmlRenderer;
pub use render::LayoutEngine;
pub use render::PaintEngine;

Modules§

api
browser
dom
js
network
render