Lyo.FileManager
3.0.0
dotnet add package Lyo.FileManager --version 3.0.0
NuGet\Install-Package Lyo.FileManager -Version 3.0.0
<PackageReference Include="Lyo.FileManager" Version="3.0.0" />
<PackageVersion Include="Lyo.FileManager" Version="3.0.0" />
<PackageReference Include="Lyo.FileManager" />
paket add Lyo.FileManager --version 3.0.0
#r "nuget: Lyo.FileManager, 3.0.0"
#:package Lyo.FileManager@3.0.0
#addin nuget:?package=Lyo.FileManager&version=3.0.0
#tool nuget:?package=Lyo.FileManager&version=3.0.0
Lyo.FileManager
FileManagerSession keeps a server list, the open connections, and the file, folder, transfer, and key actions. Several connections stay open. The selected one is the tree and the
actions. A remote server uses FileStorageHttpApi (Lyo.Http.Client against Lyo.Api.FileStorage.Models). An in-process server uses FileStorageLocalHost: local disk, S3, Azure
Blob, FTP, or SFTP, plus SQLite or Postgres for the catalog. A local SQLite file defaults to beside the folder (/data/photos.file-metadata.db). A path inside that folder is
rejected. S3, Azure Blob, FTP, and SFTP ask for a catalog path because they have no local folder to sit beside. The session talks to IFileManagerApi. Transfer uses
IFileManagerTransfer, which only an in-process store exposes. Settings, including bearer tokens, API keys, and the dock layout, persist at
$XDG_CONFIG_HOME/lyo/file-manager.json or %AppData%\Lyo\file-manager.json. The log is file-manager.log beside that file and is also written to the console. The desktop window
is lyo-files in Lyo.FileManager.App. Appsettings stores are FileManagerConfiguredHost. Opening one creates a scope and calls IFileStorageFactory.Get(name). Saved servers
stay on FileStorageLocalHost.Open.
Features
- Servers. Add, rename, and remove a remote API, a local folder, or an in-process S3, Azure Blob, FTP, or SFTP store. Each successful connect stays open, once per key store for
an in-process server. Selecting a connection shows that folder. Closing it disposes the client and keeps the saved server. Authenticate stores a bearer token or an
X-Api-Keyvalue on a remote server. Connect callsGET {route}/health, or migrates the metadata database and opens the store with the key store named byKeyStoreId. A remote server ignores that id. A failed connect sets that connection's error and leaves its tree. - Catalog. SQLite or a Postgres connection string. The default SQLite file for a local folder sits beside it (
/data/photos.file-metadata.db). A path inside the folder is rejected. S3, Azure Blob, FTP, and SFTP require a catalog path. The selected key store supplies the passphrase or AWS Secrets Manager settings. With no key store, upload stays plaintext and encrypt or rotate reports that no key is configured. A server that still has a passphrase or AWS key fields and noKeyStoreIdbecomes a named key store on load. Query filters the metadata store by name and path prefix and returns the same row shape as remoteQueryProject. - Tree and query. List a prefix, expand a directory, and keep a new folder as a pending prefix until refresh. Entering that folder and going back up still shows it. A truncated
list stays visible.
FolderTreeFilterhides loaded branches that do not match. Remote query postsProjectionQueryReqto{FileMetadataRoute}/QueryProject. - Files and folders. Metadata, rename, move, copy, delete, access links, and presigned read for catalog files. Physical-only objects use the physical routes. A folder command
lists catalog descendants and calls the file route once per id, rewriting nested prefixes (
docs/abecomesarchive/a). Upload can compress, encrypt, and set a key id. Files larger than 8 MiB use multipart on a local folder. Download one file, or zip many throughfiles/archive. - Transfer.
TransferAsynccopies or moves selected catalog files from the active connection onto another open in-process store withFileStorageTransfer. Move tombstones the source only after the destination hashes match. Key mode defaults toPreserveKeys.NewKeyandExistingKeyre-save, which FTP and SFTP need because they are not a byte copy. A remote API connection throws before any write. An optional destination prefix places the copies in that folder; blank keeps each file's current prefix. Same-server prefix move and copy stay on that connection. - Keys. Saved key stores live beside the servers. Each one is local keys or AWS Secrets Manager. Connect opens an in-process server with the one selected in the toolbar.
ReadLocalloads a key file whosekeyvalues are raw key bytes and whose metadata keeps the salt.GET key-idsfills the key picker. Rotate the selection withfiles/rotate-deks. Migrate every file on a source key withfiles/migrate-deks. A partial failure reports how many succeeded and how many failed, then reloads when anything succeeded.
Examples
Open a local folder
var session = new FileManagerSession();
session.AddLocal("Photos", "/data/photos", FileManagerMetadataKind.Sqlite);
await session.ConnectAsync(cancellationToken);
await session.UploadAsync(path, new FileManagerUploadOptions { Compress = true }, cancellationToken);
Connect to a remote API
var session = new FileManagerSession();
session.AddRemote("Workbench", "http://localhost:5000", "Workbench/FileStorage");
session.SetAuth(FileManagerAuthKind.ApiKey, apiKey);
await session.ConnectAsync(cancellationToken);
Open an appsettings store
using var configured = FileManagerConfiguredHost.Load(configuration);
using var photos = configured.Open(configured.Servers.Single(server => server.Name == "photos"));
Dependencies
Generated from ProjectReference / PackageReference (same model as docs/Lyo.ProjectGraph.html).
Lyo.Api.FileStorage.Models(direct, lyo)Lyo.Common.Core(direct, lyo)Lyo.Compression(direct, lyo)Lyo.Desktop(direct, lyo)Lyo.Encryption.AesSiv(direct, lyo)Lyo.Exceptions(direct, lyo)Lyo.FileMetadataStore(direct, lyo)Lyo.FileMetadataStore.Postgres(direct, lyo)Lyo.FileMetadataStore.Sqlite(direct, lyo)Lyo.FileStorage(direct, lyo)Lyo.FileStorage.AzureBlob(direct, lyo)Lyo.FileStorage.Ftp(direct, lyo)Lyo.FileStorage.S3(direct, lyo)Lyo.FileStorage.Sftp(direct, lyo)Lyo.Http.Client(direct, lyo)Lyo.IO.Temp(direct, lyo)Lyo.KeyStore(direct, lyo)Lyo.KeyStore.Aws(direct, lyo)Lyo.Lock(direct, lyo)Lyo.Query.Models(direct, lyo)AWSSDK.SecretsManager4.0.100.3(direct, third-party)Microsoft.Extensions.Configuration10.0.5(direct, microsoft)Microsoft.Extensions.Configuration.Binder10.0.5(direct, microsoft)Microsoft.Extensions.DependencyInjection10.0.5(direct, microsoft)Microsoft.Extensions.Logging.Abstractions10.0.5(direct, microsoft)Lyo.Common.Metadata(transitive, lyo)Lyo.DataTable.Models(transitive, lyo)Lyo.Encryption(transitive, lyo)Lyo.Ftp.Client(transitive, lyo)Lyo.Hashing(transitive, lyo)Lyo.Health(transitive, lyo)Lyo.IO.FileSystem(transitive, lyo)Lyo.Json(transitive, lyo)Lyo.Metrics(transitive, lyo)Lyo.Parameters(transitive, lyo)Lyo.Postgres(transitive, lyo)Lyo.RateLimit(transitive, lyo)Lyo.Result(transitive, lyo)Lyo.Sftp.Client(transitive, lyo)Lyo.Sqlite(transitive, lyo)Lyo.Streams(transitive, lyo)AWSSDK.Core4.0.100.4(transitive, third-party)AWSSDK.S34.0.101(transitive, third-party)AngleSharp1.5.0(transitive, third-party)Azure.Storage.Blobs12.29.1(transitive, third-party)BouncyCastle.Cryptography2.6.2(transitive, third-party, netstandard2.0)Dorssel.Security.Cryptography.AesExtra2.0.0(transitive, third-party)EasyCompressor2.1.0(transitive, third-party)FluentFTP54.2.0(transitive, third-party)Konscious.Security.Cryptography.Argon21.3.1(transitive, third-party)Microsoft.Bcl.AsyncInterfaces10.0.5(transitive, microsoft, netstandard2.0)Microsoft.Bcl.TimeProvider8.0.1(transitive, microsoft, netstandard2.0)Microsoft.EntityFrameworkCore10.0.5(transitive, microsoft)Microsoft.EntityFrameworkCore.Design10.0.5(transitive, microsoft)Microsoft.EntityFrameworkCore.Relational10.0.5(transitive, microsoft)Microsoft.EntityFrameworkCore.Sqlite10.0.5(transitive, microsoft)Microsoft.Extensions.DependencyInjection.Abstractions10.0.5(transitive, microsoft, net10.0, netstandard2.0)Microsoft.Extensions.Hosting.Abstractions10.0.5(transitive, microsoft)Microsoft.Extensions.Http10.0.5(transitive, microsoft)Microsoft.Extensions.Options10.0.5(transitive, microsoft)Microsoft.Extensions.Options.ConfigurationExtensions10.0.5(transitive, microsoft)Microsoft.Extensions.Options.DataAnnotations10.0.5(transitive, microsoft)Npgsql.EntityFrameworkCore.PostgreSQL10.0.3(transitive, third-party)SSH.NET2025.1.0(transitive, third-party)System.Buffers4.6.1(transitive, microsoft, netstandard2.0)System.IO.Hashing10.0.5(transitive, microsoft, net10.0)System.Memory4.6.3(transitive, microsoft, netstandard2.0)System.Text.Encoding.CodePages10.0.5(transitive, microsoft)System.Text.Json10.0.5(transitive, microsoft, netstandard2.0)System.Threading.RateLimiting10.0.5(transitive, microsoft)System.Threading.Tasks.Extensions4.6.3(transitive, microsoft, netstandard2.0)
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- AWSSDK.SecretsManager (>= 4.0.100.3)
- Lyo.Api.FileStorage.Models (>= 3.0.0)
- Lyo.Common.Core (>= 3.0.0)
- Lyo.Compression (>= 3.0.0)
- Lyo.Desktop (>= 3.0.0)
- Lyo.Encryption.AesSiv (>= 3.0.0)
- Lyo.Exceptions (>= 3.0.0)
- Lyo.FileMetadataStore (>= 3.0.0)
- Lyo.FileMetadataStore.Postgres (>= 3.0.0)
- Lyo.FileMetadataStore.Sqlite (>= 3.0.0)
- Lyo.FileStorage (>= 3.0.0)
- Lyo.FileStorage.AzureBlob (>= 3.0.0)
- Lyo.FileStorage.Ftp (>= 3.0.0)
- Lyo.FileStorage.S3 (>= 3.0.0)
- Lyo.FileStorage.Sftp (>= 3.0.0)
- Lyo.Http.Client (>= 3.0.0)
- Lyo.IO.Temp (>= 3.0.0)
- Lyo.KeyStore (>= 3.0.0)
- Lyo.KeyStore.Aws (>= 3.0.0)
- Lyo.Lock (>= 3.0.0)
- Lyo.Query.Models (>= 3.0.0)
- Microsoft.Extensions.Configuration (>= 10.0.5)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.5)
- Microsoft.Extensions.DependencyInjection (>= 10.0.5)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.0.0 | 43 | 10/23/2026 |