Preview

The whole fleet, in one window.

Four views of the app, playing with a demo fleet: the explorer, a transfer across hosts, disk usage and the terminal.

Demo fleet · sample data

Every server.
One file explorer.

Trekker opens the files of every Linux server you run in two panes, side by side. Copy between hosts in one move, set permissions, and see what fills each disk. Any server with SSH works as it is.

projectsactive pane · ⇥ to switch
Kestrel ▾/home/alice/projects921.1 kB total
namesizeage
↰ ..
MDreport.md159 B9d
CSVsales-2026-02.csv79.1 kB7mo
CSVsales-2026-03.csv80.6 kB6mo
CSVsales-2026-04.csv60.2 kB5mo
CSVsales-2026-05.csv86.9 kB4mo
CSVsales-2026-06.csv84 kB3mo
CSVsales-2026-07.csv83.7 kB37d
CSVsales-2026-08.csv91.3 kB6d
0 folders · 8 files · 921.1 kB
reports-2026
Marlow ▾/srv/backups/reports-2026259 kB total
namesizeage
↰ ..
CSVsales-2026-04.csv60.2 kB5mo
CSVsales-2026-05.csv86.9 kB4mo
CSVsales-2026-06.csv83.2 kB5mo
0 folders · 3 files · 259 kB
CSVsales-2026-06.csvCSVsales-2026-07.csvCSVsales-2026-08.csv3 entries · 259 kB
transferKestrel:3 entries →Marlow:/srv/backups/reports-2026
CSVfilesales-2026-06.csv84 kBoverwriteskipkeep both
+800 B vs target · target is 2mo older
CSVfilesales-2026-07.csv83.7 kBno conflict
does not exist at the destination
CSVfilesales-2026-08.csv91.3 kBno conflict
does not exist at the destination
3 files · 259 kB1.35 TB freecanceltransfer 3 entries
Marlow ▾/srv/backups/reports-2026259 kB total
namesizeage
↰ ..
CSVsales-2026-06.csv83.2 kB5mo
0 folders · 3 files · 259 kB
disk usageKestrel:/scanning 0 inodes
mnt66.95 GB
opt27.7 GB
var20.28 GB
srv15.06 GB
home2.6 GB

largest orders.ibd 2.24 GBduplicates 21 · 3.56 GB reclaimable

/67%/dev/vda1 · ext490.95 GB free
/opt/backups88%/dev/mapper/vg0 · xfs63.35 GB free
/var/lib/mysql79%/dev/vdb · ext446.17 GB free
/srv/media42%/dev/vdc1 · xfs1.26 TB free
activityfrom the audit log
chmod0640 orders.ibdSabledeploy4m
rename3 filesMarlowalice12m
uploadhero.webpTundraalice38m
The explorer

Two panes. Every server.

Bind each pane to any host and work across machines as if they shared one disk. Each card plays a real piece of the app, with a demo fleet.

Kestrel ▾/var/www/app/releases352.3 kB total
namesizeage
↰ ..
2026-05-13-0955/20.5 kB4mo
2026-06-24-1150/20.5 kB3mo
2026-07-19-1620/20.5 kB44d
2026-08-06-1420/20.5 kB26d
2026-08-21-0940/20.5 kB11d
2026-08-30-1730/24.6 kB2d
6 folders · 0 files · 128.2 kB
Kestrel ▾/var/log/nginx23.6 MB total
namesizeage
↰ ..
LOGaccess.log628.1 kB9min
TXTaccess.log.1623.8 kB1d
GZaccess.log.2.gz1.6 MB2d
GZaccess.log.3.gz1.5 MB3d
GZaccess.log.4.gz1.7 MB4d
LOGerror.log77.6 kB12min
TXTerror.log.166.5 kB1d
GZerror.log.2.gz39.9 kB2d
0 folders · 8 files · 23.6 MB
Kestrel ▾/var/www/app/releases352.3 kB total
namesizeage
↰ ..
2026-05-13-0955/20.5 kB4mo
2026-06-24-1150/20.5 kB3mo
2026-07-19-1620/20.5 kB44d
2026-08-06-1420/20.5 kB26d
2026-08-21-0940/20.5 kB11d
2026-08-30-1730/24.6 kB2d
6 folders · 0 files · 128.2 kB
Dual panesAny two hosts side by side, tabs in each, ⇥ to switch the active one.
transferslive · SSE
copymedia/Kestrel → Tundra
0.0 / 3.4 GB · eta 8s
movereleases/2026-03…Kestrel → Sable
0 / 61.5 kB · eta 3s
copyreports-2026/Kestrel → Marlow
0 / 259 kB · eta 2s
transferslive · SSE
movereleases/2026-03…Kestrel → Sable
0 / 61.5 kB · eta 3s
copyreports-2026/Kestrel → Marlow
0 / 259 kB · eta 2s
TransfersJobs with byte counters, ETA, cancel and retry, streamed live over SSE.
permissionsorders.ibdmysql:mysql
rwx
user✓✓·
group✓··
other✓··
0644rw-r--r--recursive
Permissionschmod and chown on a grid, recursive when you need it.
match^(\d{4})-(\d{2})-salesreplacesales-$1-$2
2026-06-sales.csv→sales-2026-06.csv
2026-07-sales.csv→sales-2026-07.csv
2026-08-sales.csv→sales-2026-08.csv
3 of 3 names change
Batch renameA regex across a selection, previewed before it runs.
servers4 hosts
Kestrel6mslocal
Marlow11msssh
Sable2msssh
Tundra5msssh
+ new host…
HostsLocal or over SSH, with latency and cpu at a glance.
disk usagescan finished just now
mnt66.95 GB
opt27.7 GB
var20.28 GB
srv15.06 GB
home2.6 GB
/opt/backups
/var/log
/srv/media
/var/lib/mysql
/home
newestoldest
disk usagescan finished just now
mnt66.95 GB
opt27.7 GB
var20.28 GB
srv15.06 GB
home2.6 GB
/opt/backups
/var/log
/srv/media
newestoldest
Disk usagedu scans kept in the database: the usage strip and an age heat map.
TERMINALa restricted set, not a shell
deploy@kestrel $
TERMINALa restricted set, not a shell
deploy@kestrel $
TerminalTwelve typed commands, run through the same guards as the buttons.
01 — Transfer

Copy between servers in one move

Select files in one pane and send them to the host in the other. Trekker plans the transfer before it runs, so every name that already exists is settled file by file, then runs it as a job with live byte counters and an ETA.

  • Overwrite, skip or keep both, per file
  • Cancel and retry at any point
  • Within one host, or across two
projectsactive pane · ⇥ to switch
Kestrel ▾/home/alice/projects921.1 kB total
namesizeage
↰ ..
CSVsales-2026-04.csv60.2 kB5mo
CSVsales-2026-05.csv86.9 kB4mo
CSVsales-2026-06.csv84 kB3mo
CSVsales-2026-07.csv83.7 kB37d
CSVsales-2026-08.csv91.3 kB6d
4 selected · 345.9 kB
reports-2026
Marlow ▾/srv/backups/reports-2026259 kB total
namesizeage
↰ ..
CSVsales-2026-04.csv60.2 kB5mo
CSVsales-2026-05.csv86.9 kB4mo
CSVsales-2026-06.csv83.2 kB5mo
0 folders · 3 files · 259 kB
transferKestrel:4 entries →Marlow:/srv/backups/reports-2026
CSVfilesales-2026-05.csv86.9 kBoverwriteskipkeep both
identical size
CSVfilesales-2026-06.csv84 kBoverwriteskipkeep both
+800 B vs target · target is 2mo older
CSVfilesales-2026-07.csv83.7 kBno conflict
does not exist at the destination
CSVfilesales-2026-08.csv91.3 kBno conflict
does not exist at the destination
4 files · 345.9 kB2 to decidecanceltransfer 4 entries
3 entries copied to Marlow
02 — Disk usage

See what fills every disk

A scan walks the tree and keeps its result in the database, so the usage strip, the largest files and the duplicates are still there after a reload. Open a band to drill down to what is worth cleaning up.

  • Every volume and mount at a glance
  • Duplicates confirmed by hash
  • An age heat map of each directory
volumes
/67%/dev/vda1 · ext490.95 GB free
/mnt/archive51%archive.example · nfs4.31 TB free
/opt/backups88%/dev/mapper/vg0 · xfs63.35 GB free
/srv/media42%/dev/vdc1 · xfs1.26 TB free
/var/lib/mysql79%/dev/vdb · ext446.17 GB free
disk usageKestrel:/scanning 0 inodes
mnt66.95 GB
opt27.7 GB
var20.28 GB
srv15.06 GB
home2.6 GB
largest files
backups/orders-2026-08.sql.gz2.31 GB
backups/orders-2026-07.sql.gz2.24 GB
backups/old/orders-2026-07.sql.gz2.24 GB
backups/media-2026-q2.tar1.32 GB

duplicates 21 · 3.56 GB reclaimable

03 — Control

Change files with a safety net

A delete runs only once its name is typed back, and the server checks it again. Every change is written to the audit log before it happens: an action that cannot be recorded is not attempted.

  • Typed confirmation on every delete
  • Rename patterns previewed before they run
  • Who, what and where, for every change
backupsactive pane · ⇥ to switch
Kestrel ▾/opt/backups63.4 GB total
namesharesizemodeage
↰ ..
backups-2025-q1/18.4 GB07501y
backups-2025-q2/15.2 GB075011mo
backups-2026-q1/14.9 GB07506mo
backups-2026-q2/13.1 GB07503mo
TXTnightly.sh2.1 kB07552d
4 folders · 1 file · 63.4 GB
activityfrom the audit log
chmod0640 orders.ibdSabledeploy4m
rename3 filesMarlowalice12m
uploadhero.webpTundraalice38m
delete1 entry in Kestrel:/opt/backups
backups-2025-q1/18.4 GB
contains 3 .sql.gz dumpstype backups-2025-q1 to confirm
walking the tree…canceldelete
Deleted 412 entries · 18.4 GB freed
And the rest

Built for real operations.

Hand one file to a tool or a teammate without an account: an HMAC-signed link for one path, under its own key. It expires by itself — fifteen minutes by default, a day at most — and every fetch is logged.

Follow a log file from the pane it sits in. New lines stream in over SSE as the server writes them, with no shell opened.

A sha256 runs as a background job on any file, and a recursive diff compares the two panes: what is missing, extra or different on each side.

⌘K to any favourite, saved view or action, from the keyboard. A saved view restores both panes, their hosts and their paths in one keystroke.

Security

It holds the keys.
It keeps them safe.

Trekker can reach every server you add to it, and it is built for that responsibility: credentials encrypted at rest, nothing open to the network but one entrance, and every change on the record.

AES-256-GCM at restPasswords and keys encrypted under a master key the browser never reaches.
Nothing to installAny Linux server with sshd works as it is: no agent, no daemon.
One way inBoth processes on 127.0.0.1 behind nginx, sessions held in Redis.
Audit log firstEvery change is recorded before it runs; one that cannot be recorded is not attempted.

Every server.
One file explorer.

Browse, transfer and audit the files of your whole fleet, on your own infrastructure.