Terminal browser

A native, text-first web browser for the terminal.

Puma fetches web pages, parses HTML into a semantic document model, lays the result out as text, and renders it in a scrollable terminal viewport.

Status

Active development. Puma can fetch HTTP and HTTPS pages, render semantic terminal text, persist history, enforce a cookie policy, and expose read-only MCP tools.

HTML -> Semantic document -> Text layout -> Terminal or MCP

Shape

  • No browser engine, JavaScript runtime, Chromium, or Electron.

  • Remote content is rendered through an off-screen cell buffer before it reaches the terminal.

  • The same core can serve people in a terminal and agents through MCP.

Current surface

A browser core small enough to inspect, useful enough to navigate.

Puma is deliberately not Chromium in a terminal. It keeps the web document pipeline explicit, suppresses remote scripts, and exposes the same parsed page to humans and automation.

Document pipeline

HTML

Fetch a page, parse it into a semantic tree, apply the real CSS cascade, and turn the result into a terminal-safe text layout.

Privacy surface

Local

History, URL autocomplete, cookie policy, and settings are product features, not accidental browser-engine defaults.

Agent-ready

MCP

A read-only stdio server exposes browser_open, browser_read, and browser_list_links behind URL validation and SSRF guardrails.

Terminal UX

TUI

Scrollable viewport, command bar, link focus, copy actions, and settings keep the browser usable without a GUI shell.

Workflow

Three entry points, one rendering model.

The CLI, terminal UI, and MCP mode should all describe the same page. The difference is the consumer: a person reading cells, or an agent reading the semantic document.

puma example.com

Open a page

Fetch, parse, render, and scroll a live HTTP or HTTPS document inside the terminal.

puma

Start blank

Open the browser shell first, then use the command bar and navigation model from inside the TUI.

puma mcp

Serve agents

Run the same browser core as a stdio MCP server for read-only page inspection.

Roadmap

Next, make the terminal browser feel complete.

  • Tabs and session restore

  • Bookmarks, forms, and downloads

  • Find in page and richer navigation

  • Themeable output and full Unicode handling

  • Privacy dashboard, private browsing, and proxy support