Skip to main content

Crate glass

Crate glass 

Source
Expand description

Glass — lightweight local browser control for Chrome and Chromium.

Drives Chrome or Chromium directly through the Chrome DevTools Protocol (CDP), without Playwright, WebDriver, or an embedded browser runtime.

§Quick start

Build a session with SessionOptions, start Chrome, navigate, and close the session when the work is complete:

use glass::{BrowserSession, SessionOptions};

let options = SessionOptions::builder().build()?;
let session = BrowserSession::start(&options).await?;
let page = session.navigate("https://example.com").await?;
println!("{}", page.url);
session.close().await?;

The browser module contains the reusable Rust API. The cli module backs the glass binary, mcp exposes the MCP stdio server, and tui provides the terminal interface. User-facing guides are available in the repository’s docs.

§Cargo features

  • visual-compare enables PNG comparison helpers for screenshot checks.
  • fuzzing enables test-oriented fuzzing hooks and is not needed by normal applications.

§Modules

  • browser — Chrome lifecycle, CDP client, DOM/accessibility parsing, mouse movement, security policy, profiles, and the central BrowserSession.
  • cli — Clap argument definitions and command dispatch.
  • mcp — JSON-RPC/MCP stdio server for MCP-compatible clients.
  • tui — Ratatui terminal interface.

Re-exports§

pub use browser::AccessibilityDiffSummary;
pub use browser::ActionContractError;
pub use browser::ActionFailureKind;
pub use browser::ActionKind;
pub use browser::ActionOutcome;
pub use browser::ActionStatus;
pub use browser::ActionVerificationEvidence;
pub use browser::BrowserResult;
pub use browser::BrowserSession;
pub use browser::KnowledgeAssessment;
pub use browser::KnowledgeAssessmentSignal;
pub use browser::KnowledgeAssessmentStatus;
pub use browser::KnowledgeConfidence;
pub use browser::KnowledgeInvalidation;
pub use browser::KnowledgeLifecycleEvent;
pub use browser::KnowledgeLookupContext;
pub use browser::KnowledgeLookupOptions;
pub use browser::KnowledgeObservationMode;
pub use browser::KnowledgeObservationReport;
pub use browser::KnowledgeProfileScope;
pub use browser::KnowledgePurgeResult;
pub use browser::KnowledgeRecord;
pub use browser::KnowledgeRecordBuildOptions;
pub use browser::KnowledgeRecordKind;
pub use browser::KnowledgeScope;
pub use browser::KnowledgeSignalKind;
pub use browser::KnowledgeSource;
pub use browser::KnowledgeStore;
pub use browser::KnowledgeStoreChange;
pub use browser::KnowledgeStoreError;
pub use browser::KnowledgeStoreLimits;
pub use browser::KnowledgeStoreSnapshot;
pub use browser::KnowledgeStoreStats;
pub use browser::KnowledgeValidationError;
pub use browser::NavigationOutcome;
pub use browser::PageInfo;
pub use browser::SessionOptions;
pub use browser::SessionOptionsBuilder;
pub use browser::WORKFLOW_SCHEMA_VERSION;
pub use browser::WorkflowBudgets;
pub use browser::WorkflowCheckpoint;
pub use browser::WorkflowCheckpointPage;
pub use browser::WorkflowCheckpointStep;
pub use browser::WorkflowDefinition;
pub use browser::WorkflowInput;
pub use browser::WorkflowOutput;
pub use browser::WorkflowOutputDeclaration;
pub use browser::WorkflowOutputSource;
pub use browser::WorkflowResumeError;
pub use browser::WorkflowResumePlan;
pub use browser::WorkflowRunResult;
pub use browser::WorkflowRunStatus;
pub use browser::WorkflowStep;
pub use browser::WorkflowStepRecord;
pub use browser::WorkflowStepState;
pub use browser::WorkflowTerminalProof;
pub use browser::WorkflowTrace;
pub use browser::WorkflowTraceEvent;
pub use browser::WorkflowTransactionClass;
pub use browser::WorkflowValidationError;
pub use browser::WorkflowValueType;
pub use task_protocol::GlassTask;
pub use task_protocol::TASK_PROTOCOL_SCHEMA_VERSION;
pub use task_protocol::TaskAmbiguityPolicy;
pub use task_protocol::TaskKind;
pub use task_protocol::TaskLimits;
pub use task_protocol::TaskPostcondition;
pub use task_protocol::TaskPostconditionKind;
pub use task_protocol::TaskProtocolError;
pub use task_protocol::TaskRevisionPolicy;
pub use task_protocol::TaskRiskClass;
pub use task_protocol::TaskScope;
pub use task_compiler::TASK_PLAN_SCHEMA_VERSION;
pub use task_compiler::TaskCompilationError;
pub use task_compiler::TaskExecutionPlan;
pub use task_compiler::TaskPlanOperation;
pub use task_compiler::TaskPlanStep;
pub use task_compiler::compile_task;
pub use protocol::GLASS_PROTOCOL_VERSION;
pub use protocol::TASK_COMPILE_OPERATION;
pub use protocol::TASK_VALIDATE_OPERATION;
pub use protocol::TaskCompilePayload;
pub use protocol::TaskCompileResult;
pub use protocol::TaskValidationPayload;
pub use protocol::TaskValidationResult;
pub use protocol::WEB_IR_CONTINUITY_OPERATION;
pub use protocol::WEB_IR_DIFF_OPERATION;
pub use protocol::WEB_IR_INSPECT_OPERATION;
pub use protocol::WEB_IR_VALIDATE_OPERATION;
pub use protocol::WebIrContinuityPayload;
pub use protocol::WebIrContinuityResult;
pub use protocol::WebIrDiffPayload;
pub use protocol::WebIrDiffResult;
pub use protocol::WebIrDraftPayload;
pub use protocol::WebIrInspectionResult;
pub use protocol::WebIrValidationResult;
pub use protocol::compile_task_request;
pub use protocol::compile_task_result;
pub use protocol::validate_task_result;
pub use protocol::web_ir_continuity_result;
pub use protocol::web_ir_diff_result;
pub use protocol::web_ir_inspect_result;
pub use protocol::web_ir_validate_result;
pub use extraction::EXTRACTION_CONTRACT_SCHEMA_VERSION;
pub use extraction::EvidenceCoverage;
pub use extraction::EvidenceFact;
pub use extraction::EvidenceQuality;
pub use extraction::EvidenceRelationshipHint;
pub use extraction::EvidenceSource;
pub use extraction::ExtractionBudgets;
pub use extraction::ExtractionContractError;
pub use extraction::ExtractionEvidence;
pub use extraction::ExtractionEvidenceLimits;
pub use extraction::ExtractionRequest;
pub use extraction::ExtractionScope;
pub use extraction::MAX_EXTRACTION_DEPTH;
pub use extraction::MAX_EXTRACTION_DURATION_MS;
pub use extraction::MAX_EXTRACTION_NODES;
pub use extraction::MAX_EXTRACTION_OUTPUT_BYTES;
pub use extraction::MAX_EXTRACTION_TEXT_BYTES;
pub use extraction::extract_page_context;
pub use web_ir::DraftChangeKind;
pub use web_ir::DraftEntity;
pub use web_ir::DraftEntityChange;
pub use web_ir::DraftEntityContinuity;
pub use web_ir::DraftEntityContinuityStatus;
pub use web_ir::DraftEntityKind;
pub use web_ir::DraftFixtureExpectation;
pub use web_ir::DraftRelationship;
pub use web_ir::DraftRelationshipChange;
pub use web_ir::DraftRelationshipHintDiagnostic;
pub use web_ir::DraftRelationshipKind;
pub use web_ir::GlassWebIrDiff;
pub use web_ir::GlassWebIrDraft;
pub use web_ir::RelationshipHintDiagnosticStatus;
pub use web_ir::WEB_IR_DRAFT_SCHEMA_VERSION;
pub use web_ir::WebIrValidationError;
pub use web_ir::reconcile_evidence;

Modules§

browser
Browser control modules and the reusable browser::BrowserSession API.
capabilities
Versioned Glass protocol and capability negotiation. Versioned Glass protocol and capability negotiation.
cli
Command-line argument definitions and dispatch helpers. CLI argument parsing and command dispatch.
daemon
Local Unix-socket daemon lifecycle and MCP bridge. Local Unix-socket daemon lifecycle and client bridge.
extensions
Validated extension metadata and permission boundaries. Validated extension metadata and least-privilege permissions.
extraction
Experimental bounded browser-evidence extraction contracts. Experimental bounded evidence-extraction contracts.
mcp
MCP stdio server, prompts, resources, and tool dispatch. Model Context Protocol (MCP) server.
protocol
Transport-neutral versioned request and response envelopes. Transport-neutral Glass request and response envelopes.
reliability
Versioned browser-free reliability scenario contracts. Browser-free reliability scenario contracts.
reliability_runner
Bounded browser execution for reliability scenarios and replay evidence. Bounded browser execution for versioned reliability scenarios.
results
Bounded agent-facing response projections and local result artifacts. Bounded, redacted result contracts and local diagnostic artifacts.
task_compiler
Browser-free deterministic Task Protocol execution-plan compiler. Browser-free compilation from authored tasks to bounded execution plans.
task_protocol
Strict, bounded authored Task Protocol v1 inputs. Strict, bounded authored tasks for deterministic Web IR compilation.
tui
Ratatui terminal interface. Terminal user interface (Ratatui).
web_ir
Experimental draft Web IR reconciliation and validation. Experimental draft Glass Web IR reconciliation.