prismtty 1.0.10

Fast terminal output highlighter focused on network devices and Unix systems
Documentation
<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>PrismTTY - Terminal Output Highlighting</title>
    <meta
      name="description"
      content="PrismTTY makes dense SSH, network-device, and Unix/Linux terminal output easier to scan in real time."
    >
    <meta property="og:title" content="PrismTTY">
    <meta property="og:description" content="Readable network output, live in your terminal.">
    <meta property="og:type" content="website">
    <meta property="og:image" content="https://prismtty.com/assets/prismtty-social-card.png">
    <meta property="og:image:width" content="1200">
    <meta property="og:image:height" content="630">
    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:image" content="https://prismtty.com/assets/prismtty-social-card.png">
    <link rel="canonical" href="https://prismtty.com/">
    <link rel="icon" href="assets/prismtty-mark.svg" type="image/svg+xml">
    <link rel="stylesheet" href="styles.css">
    <script src="script.js" defer></script>
  </head>
  <body>
    <div class="grain" aria-hidden="true"></div>

    <header class="site-header" data-site-header>
      <a class="brand" href="#top" aria-label="PrismTTY home">
        <img class="brand-logo" src="assets/prismtty-lockup.svg" alt="" width="68" height="30">
        <span class="brand-name">Prism<span class="tty">TTY</span></span>
      </a>
      <nav class="site-nav" aria-label="Primary navigation">
        <a href="#preview">Demo</a>
        <a href="#compare">Compare</a>
        <a href="#profiles">Profiles</a>
        <a href="#install">Install</a>
        <a class="nav-external" href="https://github.com/inxbit/prismtty">GitHub ↗</a>
      </nav>
    </header>

    <main id="top">
      <section class="hero" aria-labelledby="hero-title">
        <div class="hero-bg" aria-hidden="true">
          <span class="beam beam-cyan"></span>
          <span class="beam beam-green"></span>
          <span class="beam beam-pink"></span>
        </div>

        <div class="hero-copy">
          <p class="eyebrow">// network &amp; unix terminal highlighting</p>
          <h1 id="hero-title">Readable output,<br><span class="spectrum-text">live in your terminal.</span></h1>
          <p class="hero-lede">
            PrismTTY wraps shells, SSH sessions, pipes, and logs with fast
            PCRE2-powered highlighting tuned for network devices and Unix
            administration. No login. No agent. Just signal.
          </p>
          <div class="hero-actions">
            <a class="button primary" href="#install">Install PrismTTY</a>
            <a class="button ghost" href="https://github.com/inxbit/prismtty">View source ↗</a>
          </div>
          <dl class="hero-facts" aria-label="Project highlights">
            <div>
              <dt>Profiles</dt>
              <dd>9 <span>built&nbsp;in</span></dd>
            </div>
            <div>
              <dt>Latest</dt>
              <dd>v1.0.10</dd>
            </div>
            <div>
              <dt>Engine</dt>
              <dd>PCRE2</dd>
            </div>
            <div>
              <dt>License</dt>
              <dd>MIT</dd>
            </div>
          </dl>
        </div>

        <figure class="terminal hero-terminal" id="preview">
          <div class="terminal-bar">
            <span class="dots" aria-hidden="true"><i></i><i></i><i></i></span>
            <span class="terminal-title" data-terminal-title>ptty ssh edge-sw1.example.net</span>
            <span class="terminal-badge" data-terminal-badge>● live</span>
          </div>
          <div class="terminal-body" data-terminal aria-hidden="true"></div>
          <figcaption class="sr-only">
            A live terminal session: PrismTTY wraps an SSH connection to a switch and
            highlights interfaces in amber, IP addresses in cyan, link state in green and
            pink, and syslog severity in violet.
          </figcaption>
        </figure>
      </section>

      <section class="command-band" aria-label="Common PrismTTY commands">
        <div class="command-line">
          <span class="prompt">$</span>
          <code>ptty ssh router.example.net</code>
        </div>
        <div class="command-line">
          <span class="prompt">$</span>
          <code>prismtty --profile cisco &lt; show-tech.txt</code>
        </div>
        <div class="command-line">
          <span class="prompt">$</span>
          <code>ptty /bin/zsh</code>
        </div>
      </section>

      <section class="section compare-section" id="compare" aria-labelledby="compare-title">
        <div class="section-heading compact">
          <p class="eyebrow">// the difference</p>
          <h2 id="compare-title">Drag the seam. Watch the noise turn into signal.</h2>
          <p class="section-sub">
            Same <code>show tech</code> dump, same monospace, same screen. The only thing
            that changed is where your eyes land first.
          </p>
        </div>

        <div class="compare" data-compare>
          <pre class="compare-pane compare-raw" data-compare-raw aria-hidden="true"></pre>
          <pre class="compare-pane compare-hl" data-compare-hl aria-hidden="true"></pre>
          <div class="compare-divider" data-compare-divider aria-hidden="true">
            <span class="compare-knob"></span>
          </div>
          <label class="sr-only" for="compare-range">Reveal PrismTTY highlighting</label>
          <input
            class="compare-range"
            id="compare-range"
            type="range"
            min="0"
            max="100"
            value="58"
            data-compare-range
          >
          <span class="compare-tag compare-tag-left" aria-hidden="true">raw</span>
          <span class="compare-tag compare-tag-right" aria-hidden="true">prismtty</span>
        </div>
      </section>

      <section class="section scope-section" id="scope" aria-labelledby="scope-title">
        <div class="section-heading compact">
          <p class="eyebrow">// scope</p>
          <h2 id="scope-title">Live terminal highlighting, not device management.</h2>
        </div>
        <div class="scope-grid">
          <article class="scope-panel scope-yes">
            <h3><span class="scope-tick" aria-hidden="true">+</span> What this is</h3>
            <p>
              PrismTTY highlights output already flowing through shells, SSH sessions,
              pipes, and logs. It adds terminal color for prompts, interfaces, addresses,
              protocol state, counters, severity, and common vendor terms.
            </p>
          </article>
          <article class="scope-panel scope-no">
            <h3><span class="scope-tick" aria-hidden="true"></span> What this is not</h3>
            <p>
              It is not an NMS, a configuration management tool, a source of truth,
              a SIEM, a log platform, or a device inventory system. It does not log in,
              collect inventory, push configuration, or store operational data.
            </p>
          </article>
        </div>
      </section>

      <section class="section features-section" aria-labelledby="features-title">
        <div class="section-heading">
          <p class="eyebrow">// built for real terminal work</p>
          <h2 id="features-title">Color where operators need signal.</h2>
        </div>
        <div class="feature-grid">
          <article class="feature-card">
            <span class="feature-kicker">01</span>
            <h3>Network-aware profiles</h3>
            <p>
              Clean-room rules highlight interfaces, addresses, operational state,
              counters, prompts, syslog severity, and common vendor terms.
            </p>
          </article>
          <article class="feature-card">
            <span class="feature-kicker">02</span>
            <h3>Interactive shell wrapping</h3>
            <p>
              Start one wrapped shell with <code>ptty /bin/zsh</code>, then use normal
              SSH, telnet, and console workflows without changing habits.
            </p>
          </article>
          <article class="feature-card">
            <span class="feature-kicker">03</span>
            <h3>ChromaTerm-compatible rules</h3>
            <p>
              Load existing YAML rules, add native profiles, validate profile files,
              and reload long-running sessions after config changes.
            </p>
          </article>
        </div>
      </section>

      <section class="section profiles-section" id="profiles" aria-labelledby="profiles-title">
        <div class="section-heading compact">
          <p class="eyebrow">// dynamic profile switching</p>
          <h2 id="profiles-title">One wrapped shell follows changing device context.</h2>
          <p class="section-sub">
            PrismTTY watches login banners, prompts, and remote-jump commands, then
            re-colors the same kind of output the way each vendor expects. Pick a profile:
          </p>
        </div>

        <div class="profiles-demo" data-profiles>
          <div class="profile-tabs" role="tablist" aria-label="Built-in profiles">
            <button class="profile-tab" role="tab" data-profile="cisco" aria-selected="true">cisco</button>
            <button class="profile-tab" role="tab" data-profile="juniper" aria-selected="false">juniper</button>
            <button class="profile-tab" role="tab" data-profile="fortinet" aria-selected="false">fortinet</button>
            <button class="profile-tab" role="tab" data-profile="arista" aria-selected="false">arista</button>
            <button class="profile-tab" role="tab" data-profile="linux-unix" aria-selected="false">linux-unix</button>
          </div>
          <div class="terminal profile-terminal">
            <div class="terminal-bar">
              <span class="dots" aria-hidden="true"><i></i><i></i><i></i></span>
              <span class="terminal-title" data-profile-title></span>
            </div>
            <div class="terminal-body" data-profile-body aria-live="polite"></div>
          </div>
        </div>

        <div class="profile-list" aria-label="All built-in profiles">
          <span>generic</span>
          <span>linux-unix</span>
          <span>cisco</span>
          <span>juniper</span>
          <span>fortinet</span>
          <span>palo-alto</span>
          <span>arista</span>
          <span>arubacx</span>
          <span>versa</span>
        </div>
      </section>

      <section class="section install-section" id="install" aria-labelledby="install-title">
        <div class="section-heading compact">
          <p class="eyebrow">// install</p>
          <h2 id="install-title">Up and highlighting in one line.</h2>
        </div>
        <div class="install-grid">
          <article class="install-card">
            <div class="install-card-header">
              <h3>Homebrew</h3>
              <button class="copy-button" type="button" data-copy="brew install inxbit/tap/prismtty">Copy</button>
            </div>
            <pre><code>brew install inxbit/tap/prismtty</code></pre>
          </article>
          <article class="install-card">
            <div class="install-card-header">
              <h3>Cargo</h3>
              <button class="copy-button" type="button" data-copy="cargo install prismtty">Copy</button>
            </div>
            <pre><code>cargo install prismtty</code></pre>
          </article>
          <article class="install-card">
            <div class="install-card-header">
              <h3>Start a wrapped shell</h3>
              <button class="copy-button" type="button" data-copy="ptty /bin/zsh">Copy</button>
            </div>
            <pre><code>ptty /bin/zsh</code></pre>
          </article>
        </div>
        <div class="install-links">
          <a href="https://crates.io/crates/prismtty">crates.io package ↗</a>
          <a href="https://github.com/inxbit/prismtty/releases">GitHub releases ↗</a>
          <a href="https://github.com/inxbit/homebrew-tap">Homebrew tap ↗</a>
        </div>
      </section>

      <section class="section workflow-section" aria-labelledby="workflow-title">
        <div class="section-heading compact">
          <p class="eyebrow">// workflow</p>
          <h2 id="workflow-title">Designed to sit between you and noisy output.</h2>
        </div>
        <ol class="workflow">
          <li class="workflow-step">
            <span class="step-number">1</span>
            <h3>Wrap the session</h3>
            <p>Run <code>ptty</code> around a shell, SSH command, or console tool.</p>
          </li>
          <li class="workflow-step">
            <span class="step-number">2</span>
            <h3>Detect context</h3>
            <p>Built-in profile hints recognize Unix and vendor prompts on the fly.</p>
          </li>
          <li class="workflow-step">
            <span class="step-number">3</span>
            <h3>Highlight output</h3>
            <p>Addresses, interfaces, state, counters, and severity, colored in place.</p>
          </li>
        </ol>
      </section>

      <section class="section feedback-section" id="feedback" aria-labelledby="feedback-title">
        <div class="section-heading compact">
          <p class="eyebrow">// feedback wanted</p>
          <h2 id="feedback-title">Profile coverage gets better with real-world testing.</h2>
        </div>
        <p class="section-sub feedback-copy">
          Testing help is especially useful across the built-in profile set and custom
          profile files for other vendors, appliances, and terminal workflows.
        </p>
        <div class="feedback-list" aria-label="Profiles and vendors wanted for testing">
          <span>Cisco IOS / IOS XE / IOS XR / NX-OS / ASA</span>
          <span>Juniper Junos</span>
          <span>Fortinet FortiGate / FortiOS</span>
          <span>Palo Alto PAN-OS</span>
          <span>Arista EOS</span>
          <span>Aruba CX</span>
          <span>Versa</span>
          <span>Linux / Unix</span>
          <span>Custom vendor profiles</span>
        </div>
      </section>
    </main>

    <footer class="site-footer">
      <div class="footer-brand">
        <img class="brand-logo" src="assets/prismtty-lockup.svg" alt="" width="54" height="24">
        <span>Prism<span class="tty">TTY</span></span>
      </div>
      <p class="footer-note">MIT licensed · clean-room profiles · no telemetry.</p>
      <nav class="footer-links" aria-label="Footer">
        <a href="https://github.com/inxbit/prismtty/blob/main/README.md">Docs</a>
        <a href="https://github.com/inxbit/prismtty">GitHub ↗</a>
        <a href="https://crates.io/crates/prismtty">crates.io ↗</a>
      </nav>
    </footer>
  </body>
</html>