Skip to content

InariAimu/LtfsCapybara

Repository files navigation

LtfsCapybara

capybara License

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.

Overview

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 .cm and 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)

Platform Support

  • Ltfs, LtoTape, and LtfsServer target .NET 8 and build on Windows and Linux.
  • TapeDrive supports direct tape-device access on Windows and Linux.
  • Windows tape discovery uses \\.\TapeN devices.
  • 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.

Repository Layout

  • 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 current LtfsServer surface.

Requirements

  • .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

Getting Started

Build the .NET solution:

dotnet build LtfsCapybara.sln

Run the tests:

dotnet test LtfsCapybara.sln

Run the API server:

dotnet run --project LtfsServer

The default server URL is http://localhost:5003.

Run the GUI in development mode:

pnpm -C ltfs-capybara-gui install
pnpm -C ltfs-capybara-gui dev

The Vite development server runs on http://localhost:1420, and LtfsServer is configured to allow that origin via CORS.

Build Artifacts

For a repository-level release build on Windows, use:

buildall.bat

The script publishes non-test .NET projects and then builds the Tauri GUI, collecting artifacts into the top-level build directory.

Server Surface

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.

Development Notes

  • Tape hardware access is implemented in TapeDrive and supports Windows plus Linux SCSI pass-through backends.
  • TapeDriveBase allows 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.

Reference Projects

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.

Disclaimer

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.

License

Licensed under GNU GPLv3 with ❤.

About

A LTFS implementation with file operations

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors