Readable output,
live in your terminal.

PrismTTY colors the output already flowing through your shell, SSH sessions, pipes and logs.

brew install inxbit/tap/prismtty
View on GitHub
edge-sw1#show interfaces description
Gi1/0/1  up  up  Uplink to core-rtr
Gi1/0/2  down  down  Spare access port
Po10  up  up  Bundle to dist-a
edge-sw1#show ip route ospf
O  192.0.2.0/24 [110/20] via 198.51.100.1, Vlan1191
edge-sw1#show interfaces description
Gi1/0/1  up  up  Uplink to core-rtr
Gi1/0/2  down  down  Spare access port
Po10  up  up  Bundle to dist-a
edge-sw1#show ip route ospf
O  192.0.2.0/24 [110/20] via 198.51.100.1, Vlan1191
Real PrismTTY output, cisco profile.

  • Follows every hop

    One wrapped shell switches profiles as you ssh from device to device, and back again on exit.

  • Nine built-in profiles

    Cisco, Juniper, Fortinet, Palo Alto, Arista, Aruba CX, Versa and Linux, on a generic base.

  • Nothing stored by default

    No network code and no telemetry. Output is never written unless you ask for a trace.

One shell follows every hop.

Start one wrapped shell with ptty /bin/zsh and keep your usual ssh, telnet and console habits. When a login banner or prompt matches after you jump, PrismTTY switches to that vendor's profile. When the connection closes, it switches back.

ptty /bin/zsh generic + top of stack
  1. linux-unix

    ops@workstation:~$ ssh admin@edge-sw1.example.net
  2. linux-unix push cisco

    edge-sw1#show ip interface brief
    Interface              IP-Address      OK? Method Status                Protocol
    GigabitEthernet1/0/1   192.0.2.1       YES manual up                    up
    GigabitEthernet1/0/2   unassigned      YES unset  administratively down down
    Vlan1191               198.51.100.1    YES manual up                    up
    edge-sw1#ssh -l admin core-rtr.example.net
  3. linux-unix cisco push juniper

    admin@core-rtr> show interfaces terse ge-0/0/*
    Interface               Admin Link Proto    Local
    ge-0/0/0                up    up
    ge-0/0/0.0              up    up   inet     192.0.2.2/30
    ge-0/0/1                up    down
    admin@core-rtr> exit
  4. linux-unix cisco pop juniper

    Connection to core-rtr.example.net closed.
    edge-sw1#
Each block is real PrismTTY output for the profile marked on its left. The labels show the stack a wrapped shell keeps: a profile is pushed after ssh, telnet, screen or a serial console when the banner or prompt matches, and popped when the connection closes.

Nine built-in profiles, written clean-room.

Each profile knows how its platform writes prompts, interfaces, addresses, protocol state, counters and syslog severity. The generic profile underneath covers IPv4, IPv6, MAC addresses and common state words everywhere.

ptty /bin/zsh generic + cisco
LAB-IOS-01#show version
Cisco IOS XE Software, Version 17.09.04
LAB-IOS-01#show interfaces description
Interface              Status         Protocol Description
Gi1/0/1                up             up       Uplink to LAB-CORE
Gi1/0/2                down           down     Spare access port
Po10                   up             up       Bundle to DIST-A
Vlan1191               up             up       Synthetic users VLAN
LAB-IOS-01#show ip route
O        192.0.2.0/24 [110/20] via 198.51.100.1, 00:00:14, Vlan1191
B        203.0.113.0/24 [20/0] via 198.51.100.2, 00:01:02
lab@mx-lab-01> show version
Junos: 22.4R3.8
lab@mx-lab-01> show interfaces descriptions
Interface       Admin Link Description
ge-0/0/0        up    up   Transit to lab core
xe-7/0/2        down  down Spare optic
reth1.808       up    up   Synthetic trust segment
st0.9           up    up   Synthetic VPN tunnel
lab@mx-lab-01> show route protocol ospf
192.0.2.0/24    *[OSPF/10] 00:01:20, metric 20
                 > to 198.51.100.1 via ge-0/0/0.0
FGT-LAB-01 # get system status
Version: FortiGate-VM64 v7.4.3,build2573
Hostname: FGT-LAB-01
FGT-LAB-01 # get system interface
== [ port1 ]
name: port1   mode: static   ip: 192.0.2.10 255.255.255.0   status: up
== [ port2 ]
name: port2   mode: dhcp     ip: 0.0.0.0 0.0.0.0            status: down
FGT-LAB-01 # get router info routing-table all
S*      0.0.0.0/0 [10/0] via 192.0.2.1, port1
O       198.51.100.0/24 [110/20] via 192.0.2.2, port1
admin@pa-lab-01> show system info
hostname: pa-lab-01
model: PA-VM
sw-version: 11.1.0
admin@pa-lab-01> show interface all
name                id    vsys zone             forwarding               tag    address
ethernet1/1         16    1    untrust          vr:default               0      192.0.2.10/24
ethernet1/2.1191    17    1    trust            vr:default               1191   198.51.100.10/24
tunnel.10           20    1    vpn              vr:default               0      203.0.113.10/32
admin@pa-lab-01> show routing route
S 0.0.0.0/0 [10/0] via 192.0.2.1, ethernet1/1
ceos-lab-01#show version
Arista cEOSLab
Software image version: 4.36.0F
ceos-lab-01#show interfaces description
Interface       Status  Protocol Description
Ethernet1       up      up       Spine uplink
Et2             down    down     Spare lab link
Port-Channel10  up      up       MLAG peer-link
Vlan1191        up      up       Synthetic client vlan
ceos-lab-01#show ip route
O        192.0.2.0/24 [110/20] via 198.51.100.1, Ethernet1
LAB-ARUBA-01# show version
ArubaOS-CX 10.13.1000
LAB-ARUBA-01# show interface brief
Interface  Status  Protocol  Description
1/1/1      up      up        Core uplink
1/1/2      down    down      Spare copper
lag10      up      up        Access aggregate
vlan1191   up      up        Synthetic wireless vlan
LAB-ARUBA-01# show events
2026-05-07T12:00:00.000000+00:00 LAB-ARUBA-01 hpe-restd[2529]: Event|7708|LOG_INFO|AMM|1/1|Certificate example accepted
admin@versa-lab-01> show system details
Appliance Name: versa-lab-01
Software Version: 22.1.4
admin@versa-lab-01> show interfaces brief
NAME        TYPE      ADMIN  OPER  VRF       IP
vni-0/0     ethernet  up     up    global    192.0.2.20/24
tvi-0/332   tunnel    up     up    TenantA   198.51.100.20/30
ptvi-1      tunnel    down   down  TenantA   -
admin@versa-lab-01> show route table
TenantA  203.0.113.0/24  via 198.51.100.21  tvi-0/332
root@linux-lab:~# hostnamectl
Operating System: Ubuntu 24.04.4 LTS
Kernel: Linux 6.8.0-110-generic
root@linux-lab:~# ip -br addr
lo               UNKNOWN        127.0.0.1/8 ::1/128
ens18            UP             192.0.2.50/24
root@linux-lab:~# ss -tulpen
tcp   LISTEN 0 4096 0.0.0.0:22    0.0.0.0:* users:(("sshd",pid=101,fd=3))
udp   UNCONN 0 0    127.0.0.53:53 0.0.0.0:* users:(("systemd-resolve",pid=88,fd=13))
root@linux-lab:~# systemctl --failed
UNIT              LOAD   ACTIVE SUB    DESCRIPTION

Real PrismTTY output over the synthetic fixtures in the repository: invented hosts, documentation-range addresses. Colors are each profile's defaults; every rule can be changed in your own config.

Up and highlighting in one line.

macOS and Linux. Homebrew installs prismtty, ptty and ct, shell completions and the PCRE2 dependency. Cargo needs Rust 1.85 or newer, PCRE2 and pkg-config.

Homebrew brew install inxbit/tap/prismtty
Cargo cargo install --locked prismtty
Run ptty /bin/zsh

Live terminal highlighting, not device management.

What it colors

  • Prompts
  • Interfaces
  • Addresses: IPv4, IPv6, MAC
  • Protocol and operational state
  • Syslog severity
  • Counters and vendor terms

In output that already reaches your terminal. Existing ChromaTerm configs load as they are, and ct keeps the old command name working.

What it never does

  • Log in to devices
  • Collect inventory
  • Push configuration
  • Store operational data
  • Open a network connection

Not an NMS, a configuration tool, a source of truth, a SIEM, a log platform or an inventory system. The binary has no network code.