Repository navigation
Releases
v0.11.1
Borg 0.11.1 finds text in the quick view, sums up the system at the top of the activity monitor, and adds a Neighbors page to the network screen with a subnet scan and a port scanner that runs in the background.
Network
- Neighbors. 5 Neighbors lists the devices on your local network from the system's ARP and NDP tables, with their MAC address, vendor, name and state. Vendors come from the IEEE registry that ships with Borg. The footer names the gateway and the DNS servers, and a wide pane adds the open ports and ping time a scan found.
- Flags worth a look. Gateway marks the routers. MAC shared marks addresses that answer with one MAC address, and Gateway MAC changed marks a gateway whose MAC address changed while Borg ran. Both are what ARP spoofing looks like. Randomized marks private MAC addresses that name no vendor.
- Subnet scan. S finds the devices that never showed up in the tables. Borg asks first, then pings each address of the attached subnet, at most 254, and tries TCP ports 22, 80 and 443. Ping needs no administrator rights. Esc stops the scan.
- Remembered hosts. Borg keeps the hosts it found for each network in
neighbors.json, readable by you alone. A host that is gone shows as Offline with when it was last seen and the ports it had open. F8 forgets it. - Port scanner. P on a neighbor, or Scan ports… in its context menu, scans one host: 720 common ports, all 65,535 or a list such as
22,80,8000-8100. Fast keeps 64 connections open at once. Slow opens one every 100 to 300 ms for hosts that limit how fast you may connect. Hosts outside your networks get a warning, and the question starts on No. - Scans run in the background. A port scan is a job in Alt-J, keeps going with the network screen closed, and Port scan finished lists the open ports with their service names when it is done. The dialog waits until you are back on the panels or a monitor screen, so it never takes keys meant for the console or the editor.
- Rate limits. Borg asks a port that already answered again every 5 seconds. When it goes silent twice, the scan stops, keeps what it found, lists the ports it did not reach and suggests Slow mode. The last scan of each host is saved in
port-scans.jsonand shows in its details. - Copy from a neighbor. The context menu copies a neighbor's IP or MAC address.
Activity monitor
- System summary. The top of the process list shows a bar for each core, then CPU, Load, RAM and Swap bars beside the number of processes, the uptime and what the disks read and write per second. On Linux it adds threads and how busy the busiest disk is. S hides or shows it.
- Load you can read. Load is the last minute's demand as a share of all the cores, so at 100% every core had work. The word after it says whether it is rising, falling or steady. Above 100% the bar turns to the warning color and says about how many processes wait for a core, such as ~7 waiting.
Viewer
- Find in the quick view. After Tab moves into the quick view,
/, F7 or Ctrl-F opens the viewer's find bar on its bottom row, with the same case, word and regex switches and your recent queries.nandNstep through the matches after the bar closes, and F3 opens the viewer with the same search. - The focused quick view's footer names Tab once and starts its hints with F7 find.
Updating
From 0.11.0, borg update installs it and moves your open sessions to the new version.
From 0.8.3 to 0.10.0, run borg update and then restart Borg once. If you run the background service, also run borg service stop and then borg service start.
Borg 0.8.2 and earlier cannot download an update larger than 10 MiB. Install again instead:
curl -fsSL https://raw.githubusercontent.com/0xcd21h/borg-commander/main/scripts/install.sh | shHomebrew and Cargo installations should use their package manager.
Downloads
Borg binaries are provided for Linux and macOS on x86_64 and ARM64. Linux Borg and relay binaries are static MUSL builds. Each archive has a SHA-256 checksum file and its Ed25519 signature (.sha256.sig).
The relay container image is ghcr.io/0xcd21h/borg-relay:0.11.1 for linux/amd64 and linux/arm64.
v0.11.0
Borg 0.11.0 adds a context menu on every row, replaces text across the files a search found, and shows in the Delete dialog how much you are about to remove and which programs still use it. A file from the activity monitor, alerts, startup items or Docker now opens beside the list. Updates are signed, move your open sessions to the new version without closing them, and Borg offers them once a day.
Files and search
- Context menu. Right-click a row, or press Shift-F10, to copy its path, name or folder and to reach the actions that work on it, with their keys. It works in panels, search results, the activity monitor's processes and open files, containers, network rows, alerts and startup items, and acts on every marked file at once. A right-click no longer marks a row. Mark in the menu does.
- Replace across files. After a search for text, Ctrl-R or Replace in files… in the File menu puts new text in place of the old in the marked files, or in every file the results show. A second question names the text and the files and starts on No. A whole-word search replaces whole words, and with a regular expression
$1puts back the first group. Files that are not text, are larger than 32 MiB or changed while the job ran are skipped. - The Delete dialog tells you more. It counts the files you are about to delete and shows their size, and it names the programs that have them open, run from them or work in one of those folders. K opens Signal or priority on the first of them, so you can stop it first.
- Delete starts on No. F8 followed by Enter keeps the files. Press Y, or move to Yes and press Enter, to delete them. Clean up in the storage window starts on No too.
- Forms remember. Find in folder (Ctrl-F) opens with your last query and choices, and the memory search form keeps what it held.
Screens
- Files beside a screen. Alt-O on a row in the activity monitor, alerts, startup items or the Docker view opens the folder of its program or file in the other pane, with the cursor on the file, and the list keeps its place. Tab moves the keys between the two, and Esc in the list brings the details back. In those files you can view, edit, delete, compress, extract and make folders. Copy and move wait until the screen closes. In startup items, Enter does the same.
- Reveal from results. In search results and collections, Alt-O opens the folder of the file under the cursor.
- Filters stay. Every screen keeps its filter when it closes and shows it again when it opens.
/and then Esc clears it. - Signals from the process window. K in a process's memory map, open files, memory search or findings opens Signal or priority for that process.
- Wider hex rows. The viewer, packet dumps and memory previews show up to 64 bytes a row when there is room, with a wider gap after every eighth byte. The memory region preview counts offsets from the start of the region.
Docker
- Volume details. Volume rows show Last used, when the volume was created, its Compose project and the containers that use it. When those containers are gone, Borg estimates the last use from the newest change to the volume's files and marks the day with
~. - Look inside a volume. Enter opens a volume's files in the panel, read only. Where Borg cannot read them directly, it starts a small helper container with no network that mounts the volume read only. Borg asks before it downloads the helper image (about 2 MB) and removes the helper when you leave.
Updates
- Signed releases.
borg updatechecks each release's Ed25519 signature before it installs anything. A release signed with another key, or not signed, is refused, and your copy stays as it is. - Update with sessions open.
borg updatemoves the background service and every open Borg to the new version, and your shells and the programs running in them carry on. Each Borg waits until it has no running job, unsaved edit or pending agent request. If the new version does not answer within 60 seconds, the previous one goes back in place. - Update a paired host. U in the Remote hosts picker updates the selected host the way
borg updatedoes. - Offered once a day. Borg looks for a new release once a day and offers it in a dialog. Enter updates, S skips that version, N turns the daily check off, and Esc asks again a day later.
- Start at boot from the installer. The installer explains the background service and offers to start Borg at boot. The default answer is n.
BORG_SERVICE=1sets it up without the question, andBORG_SERVICE=0skips it.
Configuration
- A setting Borg does not know, or a value it cannot use, no longer makes it ignore the whole
config.toml. Borg says which line it is on and uses the rest. - Saving a setting changes that setting alone and keeps the rest of the file, with your comments and order.
Process watcher (Linux)
- Without
[watch.notify], the Alerts page, Options,borg service watch installandborg service watch statusnow say that alerts stay on this machine. The warning gets stronger once Borg is about to freeze processes. - When the root watcher stops, Borg goes back to watching your own processes, and the service starts the watcher again.
Security
- Mirrors filter what the host sends. A mirror passes only text and what Borg draws with to your terminal. Queries your terminal would answer, titles, links, images read from files and plain terminal modes such as keyboard lock are dropped. Copies reach your clipboard only while you have control.
- Everything Borg saves is readable by you alone, including
config.tomland saved terminal output. - Opening a Git repository no longer runs filters the repository itself names.
- Copies never write through a link left where their partial file goes.
- Updates come only from this project's release downloads, only as a regular program of sane size.
- A crafted property list can no longer hang the startup scan.
- The relay counts its limits by the address its proxy saw.
rustixis updated for RUSTSEC-2026-0486.
Fixes
- The Alerts page and the watcher no longer lose each other's changes, and an alert about a process that is still frozen stays in the log.
- RAR entries with
*,?or[in their names open correctly, and adding to a read-only archive works on drives that clone files. - Delete, new folder, edit and Git work in a local panel while the other panel is remote.
- Alt-Shift-D opens the folder tree however the terminal reports the key.
- Ctrl-W after a wide or non-breaking space no longer crashes the prompt.
- Retry after a copy's scan error retries.
- A mirror whose host stops answering keeps the last screen and reconnects for up to 100 seconds.
- Messages that showed in English only, such as Git errors and the mirror's banner, follow the chosen language.
Updating
From 0.8.3 or later:
borg updateBorg 0.8.2 and earlier cannot download an update larger than 10 MiB. Install again instead:
curl -fsSL https://raw.githubusercontent.com/0xcd21h/borg-commander/main/scripts/install.sh | shHomebrew and Cargo installations should use their package manager.
What you meet after updating:
- This is the first signed release. 0.10.0 and older check its checksum. From 0.11.0 on, every update must carry the release key's signature.
- Restart once. The update to 0.11.0 runs the updater of the version you have, which does not move open sessions yet. Restart Borg afterwards, and if you run the background service, run
borg service stopand thenborg service start. Later updates move open sessions by themselves. - Paired hosts can be updated with U in the Remote hosts picker once they run 0.11.0.
- The root watcher. If you installed it, run
borg service watch installagain to get the unit that starts the watcher again when it stops. - Delete starts on No, so press Y to delete.
Downloads
Borg binaries are provided for Linux and macOS on x86_64 and ARM64. Linux Borg and relay binaries are static MUSL builds. Each archive has a SHA-256 checksum file and its Ed25519 signature (.sha256.sig).
The relay container image is ghcr.io/0xcd21h/borg-relay:0.11.0 for linux/amd64 and linux/arm64.
v0.10.0
Borg 0.10.0 opens archives as folders, scans files and memory with YARA rules, lists what starts on its own, and on Linux watches every program start and freezes what looks wrong. All your Borgs on a machine now share one background service, and the key your computer reaches servers with sits behind Touch ID on a Mac and a password on Linux.
Archives
- Archives as folders. Enter or Ctrl-PgDn opens zip, 7z, RAR and tar archives as folders, including tar compressed with gzip, bzip2, xz or zstd. A single
.gz,.bz2,.xzor.zstfile opens as a folder holding one file. Left, or Ctrl-PgUp at the top, goes back. F3 views a file inside, F5 copies entries out, and Extract here and Extract to other panel in the File menu unpack the whole archive. - Change zip, 7z and tar archives in place. F5 and F6 copy and move files in, F7 makes a folder, F8 deletes, F6 inside the archive renames, and F4 edits a file and writes it back when you save. Borg writes the new archive beside the old one and reads it back before it replaces the original, so a change that fails or is cancelled leaves the archive as it was. RAR archives and single compressed files stay read only.
- Encrypted archives. Zip and 7z archives ask for their password in the Password dialog, and Borg keeps it in memory only. New entries in an encrypted archive are encrypted with AES-256.
- Safe unpacking. Borg asks before an unpack that grows past 1 GiB and 100 times the archive's size, or past 100,000 files, and when the destination lacks room. Entries with absolute paths,
..or device files are left out. - RAR opens through
7zz,7zorbsdtar. When none is installed, Borg offers Install bsdtar and types the command for your package manager.
Long jobs
- Before a copy, a move to another drive or an unpack that would take more than 2 minutes, or an archive change longer than 20 seconds, Borg asks in the Long job dialog. Always for this file and Always on this kind of drive skip the question from then on, and F9 → Options → Ask before long jobs again brings it back. Ctrl-L shows the drive and the speed Borg measured on it.
Scanning
- Rules on files. Ctrl-F → Look for → Rule matches scans the files below a folder with Borg's 15 built-in YARA rules and your own
.yarand.yarafiles in~/.config/borg-commander/rules. F3 and F4 open a file at the bytes that matched. - Rules on memory. Y in a process's memory map or memory search scans the memory the process filled in itself.
- Packed executables. Ctrl-F → Look for → Packed executables finds ELF, Mach-O and PE programs whose code is mostly high entropy.
- Entropy. Hex rows in the viewer get an entropy strip down the right edge, and
]and[jump between the dense parts. The memory page map marks high-entropy pages. E in the activity monitor opens Entropy scan, which looks for packed code in the memory of every process. - Agents get a
scantool for rules and code integrity. Scanning a process asks you first.
Startup items
- Alt-U or Command → Startup items lists everything set to start on its own, newest change first: at boot, at login, on a schedule, or with a shell or SSH login. That covers launch agents and daemons on macOS, systemd services and timers on Linux, cron, shell startup files and
authorized_keys. The rules run over each item and its program, Enter shows the file in the panel, and F4 edits it.
Process watcher (Linux)
- Alerts. Turn on Watch: unusual process starts in F9 → Options → Plugins, and Borg checks every new process against 12 rules, such as a shell on a network socket or a program deleted while it runs. Alt-L opens the Alerts page, where each alert shows the process tree, the command lines, the connections and the program's SHA-256.
- Freezing. For the first 7 days Borg learns which program starts which, and freezes nothing. After that it freezes a process that looks wrong. C lets it go on, K ends it, and A allows starts like it. Borg never freezes itself, programs such as
init,sshdandsudo, or a process on a terminal someone logged in to. - Every user, from the kernel.
borg service watch installadds a small root part that sees every user's processes. On Linux 5.8 or later it reads each program start inside the kernel, so a command that ends at once is still caught. - Alerts off the machine.
[watch.notify]sends alerts to Telegram, ntfy or a webhook as they happen, and calls a heartbeat URL to say the watcher is alive.borg service watch notifysends a test message. - The watcher stays off until you turn it on. On macOS the page opens, and nothing is watched.
Activity monitor and Docker
- Steady CPU. CPU is now an average over the last few seconds, as in
top, so a list sorted by CPU holds still. H hides the processes that used no CPU. - Process tree. Left and Right fold and unfold branches of the tree, and the overview shows the processes the selected one comes from and everything it started.
- Lighter on Linux. The monitor does much less work each second.
- Docker disk use. D in the Docker view, or F9 → Docker → Disk use, shows what Docker keeps on disk and how much you can reclaim. F8 types the cleanup command at the prompt, and nothing runs until you press Enter.
- Docker CPU shows Now % beside Avg %.
Sessions and the background service
- Borg sessions. With more than one session,
borgstarts with a window that lists them, when each was last used and whether one is open. Enter opens a session, F7 makes a new one, and F8 removes one. - One background service. The first
borgyou open starts a background service that all your Borgs share, with nothing to install, and it stops 30 seconds after the last session closes. A paired computer now reaches every open session, and you can pair from any Borg.borg service keep NAMEkeeps a session running with no terminal, andborg service attach NAMEopens it. - Start the service at boot from the menu. F9 → Remote → Background service… shows the command for the next step, and Enter runs it in Borg's shell.
Remote and agents
- Answer a server's requests from your own Borg. While a remote panel shows a server session, the requests its agent makes there show in your Borg too, and the first answer counts. This needs 0.10.0 on both computers.
- Approvals on top. A pairing question or an agent's request shows the moment it arrives, over the editor, the viewer, any dialog and the screensaver.
- The remote log stays. Each session keeps its remote log on disk, readable only by you, so you can read what agents did there after Borg quit. F9 → Remote → Remote log… opens it. Borg hides the passwords, tokens and keys it recognizes before it saves an entry.
- The whole host screen in a mirror. While you control a mirror of a regular session, the host lays out for your window, so its prompt line no longer falls off the bottom.
Computer key
- A key of its own. Your computer now reaches servers with a computer key, kept apart from the key servers know it by. Each server moves to it the next time you open a session there, so nothing needs pairing again.
borg pair --new-keymakes a new one. - macOS. The key lives in the login keychain, and macOS asks for Touch ID or your password the first time a Borg process reaches a server.
- Linux. The key is sealed with a password.
borg unlockchooses it the first time, and keeps the key unlocked until 12 hours pass without use.borg locklocks it at once, andborg unlock --ssh-agentlets your ssh-agent unlock it.
Security
- An agent can no longer answer its own request through a mirror. Only your keys and clicks answer approval dialogs, and a new dialog ignores Yes for its first half second.
- An agent's command with tabs, escapes or other control characters is refused.
- Claude's
downloadsaves only inside your Downloads folder and never replaces a file there. - Borg's session and service sockets refuse other users.
- macOS releases are signed with the Hardened Runtime, so other programs cannot read Borg's memory or load code into it.
Fixes
- A session open in another terminal stopped
borgwith an error. Borg now opens the Borg sessions window, andborg --session NAMEnames the Borg that holds the session: its process, its terminal and when it started. - Folder list in zsh. The folders above the command line now show in zsh after Borg moves the shell, whatever the prompt. Words match the path as the list shows it, so your home folder's name no longer matches everything inside it.
- Back where you were. Going up to the parent folder puts the cursor on the folder you came from, with the list scrolled as it was.
- Search inside files could hang on a named pipe.
- Seven-digit PIDs ran into the CPU column in the activity monitor on Linux. The network screen's PID column fits them too.
Updating
From 0.8.3 or later:
borg updateBorg 0.8.2 and earlier cannot download an update larger than 10 MiB. Install again instead:
curl -fsSL https://raw.githubusercontent.com/0xcd21h/borg-commander/main/scripts/install.sh | shHomebrew and Cargo installations should use their package manager. Building from source on Linux now also needs a nightly compiler and bpf-linker, or BORG_NO_EBPF=1, as Install in the guide describes.
Restart Borg on both client and host after updating, and restart Claude Code so it starts a new borg mcp remote. Once a server has moved to your computer's new key, an older Borg on your computer is refused there.
What you meet after updating:
- On a Mac, the first Borg that reaches a server asks for Touch ID or your password. Each
borg mcp remotethat Claude starts asks too. - On Linux, run
borg unlockin a term...
v0.9.6
Borg 0.9.6 reads inside the traffic it captures: each connection's stream, decrypted when Borg has its TLS keys, and files and streams as hex rows.
New
- Each connection's stream. On 3 Connections in the traffic viewer, the details show what each side sent, in order and with retransmitted bytes counted once, as a hex dump with the printable bytes beside it. The stream comes in turns with their direction, size and time, and a turn says how many bytes the capture lacks before it. ] and [ jump between turns, and F3 opens the whole stream in the viewer.
- Hex rows. Press
hin the viewer or the quick view to see a file's bytes as hex rows, and again to go back to the text. Binary files open as hex rows on their own. Borg reads only the rows on the screen, so a file of several gigabytes scrolls at once, and the find bar marks matches in both columns. F3 on a packet or a stream opens its bytes the same way. - Decrypt TLS with a key log. Set TLS keys to Set SSLKEYLOGFILE in Borg's shell in the Capture traffic dialog. Borg creates a
.keylognext to the capture and types theexport SSLKEYLOGFILE=…line at its shell's prompt, where you see it run. Browsers, curl, Python and other programs you start from Borg write their keys there, and their streams show the HTTP requests and answers the encrypted records carried. This works with pinned certificates too. L copies the line for a program in another terminal, and Borg puts the keys inside the saved pcapng so Wireshark opens it decrypted as well. - HTTPS through Borg's proxy. For programs that never write a key log, such as Go and Rust programs, set TLS keys to Proxy HTTPS through Borg with a temporary CA. Borg runs a proxy on
127.0.0.1with a certificate authority made for that capture alone, whose key never leaves Borg's memory, and types the line that sends HTTPS through it. Setproxy-cain the[network]section to sign with your own development CA, such as mkcert's, for services that pin it. Borg never adds a CA to the system's trust store, and the footer shows Proxy on with the proxy's address while the capture runs. - The first 1 MiB of each connection. Keep in the capture dialog starts on First 1 MiB of each connection: each conversation stays whole until it carried 1 MiB of data, and after that Borg saves only the packets' headers. Short requests stay complete while a long download leaves the file small, and the stream's heading says how many bytes were left out. Whole packets and Headers, first 128 bytes of each packet are still there.
- Time to a capture's limit. After its first 3 seconds, the footer says how soon a limit stops the capture at its current rate, such as about 30 s to 256 MiB. When a limit stops it, a notice says which one.
- Free space for captures. Set
keep-free-mibin the[network]section to keep that much free on the disk: a capture then does not start with less, and it stops once the free space drops below it. - Borg's files. F9 → Options → Borg's files… shows every place Borg keeps files, how much each one holds and what it is for, with the captures Borg saved. Borg cleans up its own leftovers 30 seconds after it starts and then every hour, and F8 removes what is left after asking.
borg storageprints the same list in the terminal, andborg storage cleanremoves the leftovers.
Fixes
- A full disk keeps the capture. A capture that fills the disk stops and keeps what it saved, where it used to throw the file away.
- Captures say why they stopped. A capture that reached 256 MiB or 200,000 packets used to stop without a word. A notice now says which limit stopped it.
Updating
From 0.8.3 or later:
borg updateBorg 0.8.2 and earlier cannot download an update larger than 10 MiB. Install again instead:
curl -fsSL https://raw.githubusercontent.com/0xcd21h/borg-commander/main/scripts/install.sh | shHomebrew and Cargo installations should use their package manager. Restart Borg on both client and host after updating.
Downloads
Borg binaries are provided for Linux and macOS on x86_64 and ARM64. Linux Borg and relay binaries are static MUSL builds. Each archive has a SHA-256 checksum file.
The relay container image is ghcr.io/0xcd21h/borg-relay:0.9.6 for linux/amd64 and linux/arm64.
v0.9.5
Borg 0.9.5 makes the panels and the command line quicker to drive from the keyboard.
New
- Same folder in the other panel. Alt-O, or Command → Same folder in other panel, opens the active panel's folder in the other panel. From search results it opens the folder the search started from. The other panel leaves a container's or remote machine's files and the quick view, and search results or a collection it showed come back with Alt-Shift-R.
- Alt-Enter on
..puts the parent folder's full path on the command line, quoted like any file name. - Hotkeys in more keyboard layouts. Ctrl and Alt keys, the letter keys of screens and dialogs, and the Y and N answers to questions now also work in Kazakh, Greek, Hebrew, Arabic, Georgian, Korean and Thai keyboard layouts, as they already did in Russian, Ukrainian and Belarusian. Thanks to @manatik.
- Tab in the folder picker. While
cdlists folders above the command line, Tab types the chosen folder into the command line without running it, escaped for the shell, and the list moves on to its subfolders. Enter runs thecd.
Fixes
- Up and Down stay in the folder picker. Up steps from the command line into the list, and Up and Down stop at its top and bottom rows while the panel's cursor keeps its place. Esc hides the picker for the word you are typing, and it comes back when you start another word.
- No stall when a document's source shows. The viewer and the quick view color the first page of a Markdown or JSON file's source while the file loads. Pressing
s, or landing on a contents search match in such a file, keeps the screen and keys responsive.
Updating
From 0.8.3 or later:
borg updateBorg 0.8.2 and earlier cannot download an update larger than 10 MiB. Install again instead:
curl -fsSL https://raw.githubusercontent.com/0xcd21h/borg-commander/main/scripts/install.sh | shHomebrew and Cargo installations should use their package manager. Restart Borg on both client and host after updating.
Downloads
Borg binaries are provided for Linux and macOS on x86_64 and ARM64. Linux Borg and relay binaries are static MUSL builds. Each archive has a SHA-256 checksum file.
The relay container image is ghcr.io/0xcd21h/borg-relay:0.9.5 for linux/amd64 and linux/arm64.
v0.9.4
Borg 0.9.4 shows what talks on your network: open ports, connections and traffic per process, and packet captures you can read inside Borg.
New
- Network screen. Alt-N opens it from the System plugin, with four pages. Ports lists every listening port, its process and who can reach it. Processes ranks processes by download and upload rate, and the details chart the last 60 seconds and list the process's connections. Connections shows every connection with its process, remote host name, protocol, state and rates, and Interfaces shows addresses, rates, packet and error counts. The filter takes plain words and fields such as
port:443,proc:node,host:andstate:. Enter shows the row's process in the activity monitor, and Esc there brings you back to the network screen. Alt-N in the activity monitor opens the network screen on the selected process. - Capture traffic. R on the network screen records the selected row's packets with the installed
tcpdump: a port, one connection, a process, or the whole interface, for 5 to 60 seconds or until you press R again, whole packets or headers only. The capture is saved as a.pcapfile only you can read, in the panel's folder. - Traffic viewer. A finished capture opens with pages for processes, hosts, connections and packets. Hosts are named from the capture's DNS answers and TLS server names, Enter goes one level down and Esc steps back, and a packet shows its layers and a hex dump.
proto:dns,proto:tls,proto:httpandproto:quicfilter by what Borg recognized. F3 opens.pcap,.pcapngand.capfiles from the panels in the same viewer. - Capture as administrator. When tcpdump has no permission, Borg asks to capture as administrator and opens the system's own password dialog, so Borg never sees the password. On macOS such a capture listens through
pktap, and every packet carries the process that sent or received it, short-lived ones included. - Install tcpdump from Borg. A capture that finds no tcpdump offers the exact install command for apt, dnf, pacman, zypper, apk or Homebrew and types it at the shell prompt, so you see the output and answer the password prompt yourself. R works as soon as it finishes.
- Agents can capture traffic. An agent connected through
borg mcpcan ask for a capture with the newcapturetool. Borg asks you first, saves the.pcap, and gives the agent a summary of processes, hosts, connections and protocols without packet contents.readon a capture file gives the same summary. - Three new screensavers. Borg now picks one of five: the spinning cube, the glitching logo, a clock in the logo's block letters that tears apart as each minute turns, the logo swirling out into a spiral galaxy and back, or the logo rebuilt plank by plank while the old planks gather into a second logo.
Fixes
- Hotkeys work in Cyrillic layouts. With a Russian, Ukrainian or Belarusian layout on, Ctrl and Alt keys and the letter keys of screens and dialogs act as the US key in the same place. Ctrl-C reaches the shell again in terminals with the keyboard protocol. Questions also answer to the first letter of their buttons in Borg's language, such as Д and Н in Russian, and Y and N keep working.
- Pictures stay on screen after a resize of the terminal window in kitty-protocol terminals, in the viewer (F3) and the quick view (Ctrl-Q).
Updating
From 0.8.3 or later:
borg updateBorg 0.8.2 and earlier cannot download an update larger than 10 MiB. Install again instead:
curl -fsSL https://raw.githubusercontent.com/0xcd21h/borg-commander/main/scripts/install.sh | shHomebrew and Cargo installations should use their package manager. Restart Borg on both client and host after updating.
Downloads
Borg binaries are provided for Linux and macOS on x86_64 and ARM64. Linux Borg and relay binaries are static MUSL builds. Each archive has a SHA-256 checksum file.
The relay container image is ghcr.io/0xcd21h/borg-relay:0.9.4 for linux/amd64 and linux/arm64.
v0.9.3
Borg 0.9.3 searches inside files, jumps to folders from the command line, and sends signals to processes.
New
- Search inside files. Ctrl-F has a Containing field: name a pattern such as
*.rs, type the text, and the results list each file's first matching line in a Match column. Alt-C, Alt-W and Alt-R switch exact case, whole words and regular expressions, and Ctrl-P and Ctrl-N bring back earlier queries. Binary and very large files are skipped and counted while the search runs. - Open a match where it is. F3 opens the viewer and F4 the editor at a result's match, with the find bar open on your query. Ctrl-Q shows the match in the quick view, and Alt-E edits it in the other panel while the results stay in view.
- Jump to folders from the command line. Type
cdand Borg lists your hotlist and recent folders right above the prompt; Up picks one and Enter opens it. Type a path and its subfolders appear and narrow as you type, incdand in any other command, where Enter types the folder's name into the path. - Folder hotlist. Ctrl-\ opens it on the folder you are in. Insert pins a folder, F8 removes one, and typing narrows the list. The hotlist lives in
config.tomlunder[folders], and Borg keeps your last 64 folders in a private file in its state folder. - Signals and priority. K in the activity monitor (Alt-M) sends Terminate, Interrupt, Hang up, Kill, Stop or Continue to the selected process, or lowers or raises its priority. Borg checks that the process is still the one you picked, and offers A Administrator when it belongs to someone else.
Fixes
- A typed
cdkeeps the panels on screen. The active panel follows the shell to the new folder, and a failedcdleaves a notice; Ctrl-O shows the shell's message. - The panels come back after a full-screen program typed ahead of the previous command's end, such as
vimtyped whilesleep 3still ran in the macOS/bin/bash. - The README and the website say why Borg exists, and show the editor beside search results and the folder picker.
Updating
From 0.8.3 or later:
borg updateBorg 0.8.2 and earlier cannot download an update larger than 10 MiB. Install again instead:
curl -fsSL https://raw.githubusercontent.com/0xcd21h/borg-commander/main/scripts/install.sh | shHomebrew and Cargo installations should use their package manager. Restart Borg on both client and host after updating.
Downloads
Borg binaries are provided for Linux and macOS on x86_64 and ARM64. Linux Borg and relay binaries are static MUSL builds. Each archive has a SHA-256 checksum file.
The relay container image is ghcr.io/0xcd21h/borg-relay:0.9.3 for linux/amd64 and linux/arm64.
v0.9.2
Borg 0.9.2 finds text in the viewer and the editor, lays out JSON, and can put an editor in either panel.
New
- Find in the viewer and the editor.
/, F7 or Ctrl-F opens a find bar in the status line. It searches as you type, marks every match on the screen and counts them; Enter and Shift-Enter step through them, going on from the other end. Alt-C, Alt-W and Alt-R switch exact case, whole words and regular expressions, and Ctrl-P and Ctrl-N bring back recent queries. The viewer searches large files in the background, and with the bar closednandNstep on. - Replace takes the find bar's switches, and
$1in the replacement puts back what a regular expression's first group matched. - An editor in either panel. Alt-E opens the selected file in Borg's editor inside the active panel, so you can edit two files side by side, or a file next to its folder. F6 moves to the other panel and Tab comes back, text copied in one editor pastes in the other, and the shortcut bar shows the keys of whatever has focus.
- JSON opens laid out in the viewer, one value to a line, with its keys in order and its numbers as written;
sor F4 shows the file as written. JSON Lines files are laid out a record at a time. - Alt-Shift-F lays out JSON in the editor, in one step that Ctrl-Z undoes.
Fixes
- A file written on a single line edits without delay. The editor draws only the part of a line on the screen, and leaves lines over 20,000 characters uncolored.
- The Chinese, Portuguese, Spanish and Russian interface reads correctly. Every translated text was checked: wrong meanings are fixed, the Portuguese follows Portugal's usage, and the Spanish addresses you the same way throughout.
- Two borg cloud messages are translated into every interface language.
- The guide is rewritten for clarity in English and translated again in full.
Updating
From 0.8.3 or later:
borg updateBorg 0.8.2 and earlier cannot download an update larger than 10 MiB. Install again instead:
curl -fsSL https://raw.githubusercontent.com/0xcd21h/borg-commander/main/scripts/install.sh | shHomebrew and Cargo installations should use their package manager. Restart Borg on both client and host after updating.
Downloads
Borg binaries are provided for Linux and macOS on x86_64 and ARM64. Linux Borg and relay binaries are static MUSL builds. Each archive has a SHA-256 checksum file.
The relay container image is ghcr.io/0xcd21h/borg-relay:0.9.2 for linux/amd64 and linux/arm64.
v0.9.1
Borg 0.9.1 makes the editor keep up with typing and fixes keys that went to the wrong place.
Fixes
- Typing in the editor keeps up. An edit colours again only the lines it changed, instead of the whole window around the view.
- The editor closes over search results and collections. Esc, and Discard for unsaved changes, close the editor when it was opened from search results or a collection.
- A command typed right after a panel changes folder runs. In Bash and Fish, Enter on a command typed while the shell followed the panel could open the entry under the panel's cursor instead.
- A picture opens only while the viewer still waits for it. One that finishes loading after Esc, or after you moved on to the next picture, no longer opens.
- Open files previews arrive. A preview that took a moment to read in the activity monitor's Open files is no longer dropped.
- The selected process shows within a second whether macOS protects its memory, also with many programs running.
- A cursor move made while a panel refreshes stays. On a slow listing, such as a container's or another computer's, the refresh no longer moves the cursor back, so the next key acts on the entry you chose.
- Mirrors of a background host keep colours and characters whole when an escape sequence or a character is split between two screen updates.
Updating
From 0.8.3 or later:
borg updateBorg 0.8.2 and earlier cannot download an update larger than 10 MiB. Install again instead:
curl -fsSL https://raw.githubusercontent.com/0xcd21h/borg-commander/main/scripts/install.sh | shHomebrew and Cargo installations should use their package manager. Restart Borg on both client and host after updating.
Downloads
Borg binaries are provided for Linux and macOS on x86_64 and ARM64. Linux Borg and relay binaries are static MUSL builds. Each archive has a SHA-256 checksum file.
The relay container image is ghcr.io/0xcd21h/borg-relay:0.9.1 for linux/amd64 and linux/arm64.
v0.9.0
Borg 0.9.0 adds a built-in editor, a clipboard, instant search with a query language, Time Machine exclusions on macOS, and new ways to look inside a process's memory.
Editor
- F4 opens the selected file in Borg's own editor; Shift-F4 opens it in
$VISUALor$EDITOR. - The editor keeps the file's line endings and indentation, highlights code as the viewer does, and numbers the lines.
- Shift with the arrows selects. Ctrl-C, Ctrl-X and Ctrl-V copy, cut and paste; Ctrl-Z and Ctrl-Y undo and redo; Tab and Shift-Tab indent and outdent.
- Find (Ctrl-F, F7), replace (Ctrl-R, F4) one match at a time or all in one undo step, and go to a line (Ctrl-G).
- F2 or Ctrl-S saves through a temporary file, so a file is never half written. Borg asks before closing with unsaved changes, and before saving over a file that changed on disk.
- A click places the cursor, a drag or Shift-click selects, a double click selects a word, and the wheel scrolls.
- Files that are not UTF-8 text, or are larger than 32 MiB, open in the viewer instead.
Search
- Query language. In Ctrl-F every word must match:
main rsfindsmain.rs, anda | bfinds either. Quoted phrases, globs, paths such assrc/liband-wordwork, as do the filtersext:rs,toml,type:file,size:>10M,mod:<7dandin:src. - Generated and ignored files are left out:
node_modules,.git,targetordistbeside a build file, folders tagged withCACHEDIR.TAG, and what.gitignore,.ignore,.rgignoreand.borgignorelist. F4 in the search dialog edits what is left out and saves it;excluded:yesandhidden:yessearch everything once. - Instant search. Search → Index this folder for instant search keeps an index of every name below a folder, so a search there answers at once. Indexes are rebuilt in the background.
- Recent searches are listed under the form; Ctrl-P and Ctrl-N, or a click, take one.
history = falseunder[search]turns this off. - Names match in any alphabet and any case, however the file system stores accented letters, and matches near the search folder show first.
- On macOS, searches started above
~/Library/Containersand~/Library/Group Containersleave them out, so macOS does not stop the search to ask about access to other apps' data.
Clipboard
- Ctrl-Insert copies the marked names and Alt-Shift-Insert their full paths; the File menu offers both. Copies reach your computer's clipboard through the terminal, also over SSH and in a mirror you control.
- Borg keeps its last 20 copies: Ctrl-V or Shift-Insert pastes the latest into Borg's own fields, such as dialogs, even where the terminal cannot reach your clipboard.
Time Machine exclusions (macOS)
- Alt-T, or Command → Time Machine, shows what backups leave out in three tabs: the selection, cache and build folders under the panel's folder with their sizes, and every exclusion Borg can find.
- E excludes with a mark on the item, which needs no password and moves with it; P excludes the path; I includes items again; A excludes a path you type.
- Panels mark excluded entries with ⊘ and count them in the footer, and Ctrl-L Info shows how Time Machine treats the item under the cursor.
Activity monitor and memory
- Page map. M in a region shows its pages by what they hold: pointers, text, code, compressed or encrypted data, zeros, and pages not in memory.
- Strings and Indicators. The memory search lists the strings a process built in its own memory, marks those only memory holds, and picks out URLs, IP addresses, paths, command lines, secrets and base64.
- Integrity check. I compares the code in memory with the files it came from, and looks for executable images no file backs, memory both writable and executable, and injected libraries. Findings are leads, not verdicts.
- Captures fold runs of zero rows, skip a region's leading zeros, and step through it 64 KiB at a time with ], [, > and <.
- Open files previews a regular file under its details; Tab scrolls the preview and F3 opens the file in the viewer.
- On macOS, a process whose memory System Integrity Protection or the Hardened Runtime guards is marked Memory protected, and Administrator is no longer offered where it cannot help.
- Agents can search a process's memory. The first search of each process waits for your approval.
Remote
- Forget a paired host on this client with F8 when it is unavailable, or Shift-F8 when it is online. Its sessions and files are kept.
exitin a remote console asks before it closes the shell on the host.- Borg cloud recovers a stalled relay registration, and Remote hosts says why a host is unavailable.
Other changes
- Alt-R reloads the active panel. Remote hosts moved to Alt-H.
- Dialogs take the mouse: the theme and language pickers, jobs and their questions, About, Remote hosts, Remote access and 2048.
- In Bash and Fish, the
cdBorg types when a panel changes folder no longer shows in the console. - Paging through a large highlighted file no longer stalls.
- A file named like a picture that holds text opens as text.
- Translated buttons and keybar hints keep their key at the start.
- Rare glitches flash over empty folders, and each October 28 an empty folder remembers Sir Patrick Stewart, with a portrait drawn from a photo by Gage Skidmore (CC BY-SA 3.0).
Updating
From 0.8.3:
borg updateBorg 0.8.2 and earlier cannot download an update larger than 10 MiB, and 0.9.0's archives are larger. Install again instead:
curl -fsSL https://raw.githubusercontent.com/0xcd21h/borg-commander/main/scripts/install.sh | shHomebrew and Cargo installations should use their package manager. Restart Borg on both client and host after updating.
Downloads
Borg binaries are provided for Linux and macOS on x86_64 and ARM64. Linux Borg and relay binaries are static MUSL builds. Each archive has a SHA-256 checksum file.
The relay container image is ghcr.io/0xcd21h/borg-relay:0.9.0 for linux/amd64 and linux/arm64.