LtfsCapybara is an LTFS toolkit for managing LTO tape media on Windows and Linux. The repository includes the core LTFS libraries, a tape-drive hardware access layer, cartridge-memory parsing, an ASP.NET Core API server, and a Vue + Tauri desktop GUI.
Core capabilities currently implemented include:
- LTFS 2.4 labels, index handling, and tape formatting flows.
- Tape load, unload, unthread, rewind, read, write, and positioning operations.
- Cartridge memory parsing for
.cmand binary dumps. - Local cache and inspection of LTFS indexes and tape metadata.
- REST APIs for tape drives, local tapes, local indexes, settings, tasks, and AI-assisted operations.
- Desktop UI for browsing tapes, task groups, tape-machine actions, and local index content.
The codebase is organized around this stack:
GUI (Vue 3 + Tauri)
|
v
LtfsServer (ASP.NET Core API)
|
v
Ltfs (LTFS logic)
|
v
TapeDrive (Windows tape I/O + SCSI)
|
v
LtoTape (cartridge metadata parsing)
Ltfs,LtoTape, andLtfsServertarget.NET 8and build on Windows and Linux.TapeDrivesupports direct tape-device access on Windows and Linux.- Windows tape discovery uses
\\.\TapeNdevices. - Linux tape discovery uses standard
/dev/nst*and/dev/st*device nodes. - The desktop GUI is built with Tauri and Vue 3; GUI packaging still depends on the target platform's Tauri prerequisites.
- Ltfs/README.md: core LTFS library for format, read, write, verify, labels, and index operations.
- TapeDrive/README.md: Windows tape hardware access layer built on tape device handles and SCSI commands.
- LtoTape/README.md: cartridge memory and metadata parsing library.
- LtfsServer/README.md: ASP.NET Core backend used by the GUI and tooling.
- ltfs-capybara-gui/README.md: Vue 3 + Tauri frontend.
LtfsTest/: automated tests for LTFS labels, indexes, MAM, verification, and update behavior.Test/: reference console project showing how to use the libraries directly.TestLocal/: local resource and sample-data testing helpers.Tools/barcodegen/: barcode generation utility.Tools/ltobox/: RP2040-based display tool for tape information.protocol/apidoc.md: API notes for the currentLtfsServersurface.
- .NET 8 SDK
- Node.js
- pnpm for GUI development
- Rust toolchain and Tauri prerequisites for desktop GUI builds
- Windows or Linux for direct tape-drive access
Build the .NET solution:
dotnet build LtfsCapybara.slnRun the tests:
dotnet test LtfsCapybara.slnRun the API server:
dotnet run --project LtfsServerThe default server URL is http://localhost:5003.
Run the GUI in development mode:
pnpm -C ltfs-capybara-gui install
pnpm -C ltfs-capybara-gui devThe Vite development server runs on http://localhost:1420, and LtfsServer is configured to allow that origin via CORS.
For a repository-level release build on Windows, use:
buildall.batThe script publishes non-test .NET projects and then builds the Tauri GUI, collecting artifacts into the top-level build directory.
LtfsServer currently exposes API areas for:
- health and service info
- tape drive discovery and machine actions
- cached local tape summaries
- local LTFS index browsing
- local filesystem browsing
- server settings
- tape-scoped task groups
- AI tool discovery and chat proxy endpoints
See LtfsServer/README.md and protocol/apidoc.md for more detail.
- Tape hardware access is implemented in
TapeDriveand supports Windows plus Linux SCSI pass-through backends. TapeDriveBaseallows the higher-level LTFS code and tests to run against fake drives.- The GUI uses Vue 3, Naive UI, Pinia, vue-i18n, and Tauri 2.
- The repository includes both direct library usage examples and server-backed UI flows.
If you want to understand usage patterns first, start with:
Test/for direct library usage.LtfsTest/for expected behavior and regression coverage.LtfsServer/for the HTTP integration layer.ltfs-capybara-gui/for the current end-user workflow.
This project is under active development and may have deprecated or unstable features. Use at your own risk. This is NOT a backup solution. Please ensure you have proper backups of your data before using this software.
This software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.
Licensed under GNU GPLv3 with ❤.
