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-compareenables PNG comparison helpers for screenshot checks.fuzzingenables 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 centralBrowserSession.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::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::BrowserSessionAPI. - 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.