{
  "schema": "tesign-radar/item/1",
  "generated_at": "2026-09-17T01:56:13.055Z",
  "lang": "en",
  "slug": "terminal-browser",
  "url": "https://tesign.com/en/item/terminal-browser/",
  "alternates": {
    "ko": {
      "html": "https://tesign.com/item/terminal-browser/",
      "json": "https://tesign.com/item/terminal-browser/index.json",
      "markdown": "https://tesign.com/item/terminal-browser/index.md"
    },
    "en": {
      "html": "https://tesign.com/en/item/terminal-browser/",
      "json": "https://tesign.com/en/item/terminal-browser/index.json",
      "markdown": "https://tesign.com/en/item/terminal-browser/index.md"
    }
  },
  "name": "terminal-browser",
  "use_label": "A browser inside your terminal",
  "one_liner": "A real Chromium browser running inside kitty-graphics terminals like ghostty and VS Code",
  "text": {
    "why": "This is not a text-mode imitation: it reads the pixels Chromium renders on the GPU through Electron's offscreen rendering and paints them into the terminal with the kitty graphics protocol. A coding agent and a website share one terminal tab, the agent can drive open browsers through an agent-browser compatible CLI (terminal-browser action), and ctrl+g selects a page element to send to the agent. The --ssh option runs the browser locally and proxies only its network requests through the remote host, so a remote localhost site shows without port forwarding. Installed with one curl line or Homebrew; v0.8.1 (2026-09-09), MIT.",
    "take": "The goal is not staying in the terminal for its own sake but keeping the agent and the browser in one tab and one CLI — which is why a kitty-graphics terminal is the price of entry.",
    "build": [
      "Since terminal-browser action is agent-browser compatible, you can build a loop where the agent's HTML mock-ups open in a split pane and you pick elements to feed back. The examples/embedded reference shows how to embed a web view inside your own TUI."
    ],
    "who": [
      {
        "role": "Developers running coding agents such as Claude Code or Codex in the terminal",
        "situation": "the agent drives the browser itself"
      },
      {
        "role": "People developing on remote servers",
        "situation": "preview localhost over --ssh without port forwarding"
      },
      {
        "role": "ghostty and kitty users",
        "situation": "open docs and web apps in a split pane"
      }
    ],
    "start": [
      {
        "command": false,
        "text": "curl -fsSL https://terminal-browser.sh/install | bash   # macOS & Linux"
      },
      {
        "command": false,
        "text": "brew install terminal-browser                            # Homebrew"
      },
      {
        "command": false,
        "text": "terminal-browser open <url>"
      },
      {
        "command": false,
        "text": "terminal-browser --split right"
      },
      {
        "command": false,
        "text": "terminal-browser open --ssh <user@host> <url>"
      }
    ],
    "caveat": [
      "MIT (per the repository LICENSE file; the README itself does not state a licence)",
      "macOS and Linux per the install script; Windows is not mentioned in the README [확인 필요]. Requires a terminal with the kitty graphics protocol (ghostty, kitty, cmux, VS Code and others)",
      "v0.8.1 (2026-09-09); Chrome extensions and design mode are on the roadmap; it runs Electron (Chromium) underneath; memory footprint [확인 필요]"
    ]
  },
  "cta": {
    "type": "install",
    "label": "INSTALL",
    "url": "https://terminal-browser.com/"
  },
  "ready": "install",
  "categories": [
    "dev-tools",
    "ai"
  ],
  "categories_confirmed": true,
  "tags": [
    "terminal",
    "browser",
    "chromium",
    "kitty-graphics",
    "coding-agents",
    "rust"
  ],
  "platform": [
    "macos",
    "linux",
    "cli"
  ],
  "license": {
    "spdx": "MIT",
    "scope": "permissive",
    "scope_text": "Use, change and redistribute, commercially too. Keep the notice.",
    "url": "https://spdx.org/licenses/MIT.html",
    "note": null,
    "open_source": true
  },
  "language": "TypeScript",
  "source_urls": {
    "canonical": "https://terminal-browser.com/",
    "github": "https://github.com/zenbu-labs/terminal-browser",
    "huggingface": null,
    "app_store": null,
    "sightings": [
      {
        "source": "showhn",
        "url": "https://github.com/zenbu-labs/terminal-browser",
        "posted_at": "2026-08-31T20:19:48.000Z",
        "hn_url": "https://news.ycombinator.com/item?id=49514420"
      },
      {
        "source": "github",
        "url": "https://github.com/zenbu-labs/terminal-browser",
        "posted_at": "2026-09-04T01:00:00.000Z",
        "hn_url": null
      }
    ]
  },
  "numbers": {
    "as_of": "2026-09-16T21:00:00.000Z",
    "stars": 2972,
    "stars_unit": "GitHub stars",
    "stars_checked_at": "2026-09-15T19:34:58.402Z",
    "stars_observed_since_check": 2,
    "star_delta_24h": 2,
    "star_delta_7d": 7,
    "star_delta_30d": 35,
    "star_delta_unit": "GitHub stars gained in the window, GH Archive events summed to as_of",
    "spark_14d": [
      null,
      15,
      9,
      2,
      null,
      null,
      null,
      null,
      5,
      null,
      null,
      null,
      null,
      2
    ],
    "hf_likes": null,
    "hf_likes_observed_at": null,
    "hn_points": 4,
    "hn_points_observed_at": "2026-09-13T14:00:33.121Z",
    "store": null,
    "method": "Star total = the value last checked on GitHub (stars_checked_at) + increases observed via GH Archive since. The 24h · 7d · 30d gains are GH Archive hourly events summed to the reference time (as_of). No score of ours."
  },
  "ranks": null,
  "activity": {
    "pushed_at": "2026-09-14T16:01:12.000Z",
    "owner_type": "Organization",
    "open_issues": 62,
    "contributors": 6,
    "releases_count": 35,
    "latest_release": {
      "tag": "v0.8.1",
      "published_at": "2026-09-09T01:07:54.000Z",
      "prerelease": false
    },
    "checked_at": "2026-09-15T19:34:58.402Z",
    "core_checked_at": "2026-09-15T19:34:58.402Z"
  },
  "signals": [
    {
      "kind": "cross",
      "label": "CROSS-SIGNAL",
      "value": "Show HN + GitHub"
    },
    {
      "kind": "back",
      "label": "BACK CATALOG",
      "value": null
    }
  ],
  "images": {
    "og": "https://tesign.com/img/terminal-browser-6633abf116.png",
    "cover": "https://tesign.com/img/terminal-browser-6633abf116.png",
    "cover_width": 2400,
    "cover_height": 1260,
    "gallery": [
      "https://tesign.com/img/terminal-browser-6633abf116.png"
    ],
    "alt": "A split terminal: a coding agent conversation on the left, a web page actually rendered in the terminal-browser pane on the right",
    "tier": 1
  },
  "dates": {
    "first_seen_at": "2026-09-13T09:38:11.462Z",
    "source_created_at": "2026-08-31T20:19:48.000Z",
    "discovery_hours": 301.3065172222222,
    "launch_signal_at": "2026-08-31T20:19:48.000Z",
    "kept_at": "2026-09-14T19:27:43.614Z",
    "first_published_at": "2026-09-14T19:27:43.743Z",
    "updated_at": "2026-09-15T04:36:57.031Z",
    "ingestion_mode": "backfill"
  },
  "notes": [
    "This file was produced by the same build, from the same data, as the tesign.com item page. The text is editorial; the numbers are stored observations.",
    "null in the JSON means not observed — never zero. The Markdown writes [unconfirmed] for it.",
    "Star total = the value last checked on GitHub (stars_checked_at) + increases observed via GH Archive since. The 24h · 7d · 30d gains are GH Archive hourly events summed to the reference time (as_of). No score of ours.",
    "Reconstructed from archive data, not a live discovery.",
    "A summary, not legal advice."
  ]
}
