Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →To use Lioran S3 from TypeScript, install its pre-alpha driver, connect to a running instance with BastionClient, verify the connection with health(), then create a bucket and use its handle to upload and retrieve objects. You need Node.js 18 or newer, TypeScript 5 or newer, and valid credentials. Lioran S3 V1 is self-hosted, single-node, and pre-alpha—not a drop-in AWS S3 API replacement.
What you need before connecting
- Node.js 18 or newer and TypeScript 5 or newer.
- A running Lioran S3 instance.
- Valid user credentials or an access key and secret key.
The setup guide installs @liorans3/driver@prealpha. That tag does not establish which exact package version will resolve when you install it, so check the package version in your environment and pin a version you have tested. The guide’s caution is direct: “This is pre-alpha infrastructure. Pin versions and test carefully.” The setup guide was authored by Swaraj Puppalwar. The product overview identifies V1 as pre-alpha, launched October 1, 2026. Lioran S3 product overview
As an Amazon Associate I earn from qualifying purchases.
Install the driver and TypeScript tools
From a new project directory, initialize npm, install the driver, add the development tools, and create a TypeScript configuration:
npm init -y
npm install @liorans3/driver@prealpha
npm install -D typescript tsx @types/node
npx tsc --init
The package and commands above are those shown in the setup guide; they do not imply that the pre-alpha tag points to a fixed version. For a reproducible application, use the tested package version rather than relying indefinitely on a moving tag.
#1 Best Overall
Configure credentials and check the connection
Keep the connection string outside your source files and source control. The guide’s example uses an environment variable:
LIORAN_S3_URI=bastion://admin:[email protected]:27118
Replace the example password with your own credentials, and configure the variable in your local environment or deployment secret manager. Do not commit it or print it in logs. The driver also supports structured username-and-password configuration and access-key-and-secret-key configuration.
Read the connection string from the environment, create a client, and call health() before attempting storage operations. The health response includes the service name and version.
Rank #2
- TypeScript implements a superset of syntax for strictly typed development, facilitating deep static analysis and enhanced development environment integration. The compiler translates source into standard script formats, ensuring parity across any runtime.
- TypeScript is ideal for front-end developers, full-stack engineers, and software architects who build large-scale web applications. It serves those looking to improve code excellence, reduce bugs through static checking, and maintain complex projects more.
- Lightweight, Classic fit, Double-needle sleeve and bottom hem
import { BastionClient } from "@liorans3/driver";
const uri = process.env.LIORAN_S3_URI;
if (!uri) {
throw new Error("LIORAN_S3_URI is not configured");
}
const client = new BastionClient(uri);
const status = await client.health();
console.log({ service: status.service, version: status.version });
Use the actual response shape supported by the driver version you have installed if its types differ from this illustrative access pattern; the setup guide establishes that the response contains service name and version, but not an exact version-specific typing contract.
Create a bucket and upload an object
Create the bucket through client.buckets.create(...), then obtain a bucket handle with client.bucket(name). For text or JSON, pass a string or serialized value to put and specify a content type where appropriate:
await client.buckets.create("demo");
const bucket = client.bucket("demo");
const result = await bucket.put("notes/hello.txt", "Hello from TypeScript", {
contentType: "text/plain; charset=utf-8",
});
console.log({ key: result.key, size: result.size, sha256: result.sha256 });
The returned result shown by the guide exposes the object key, size in bytes, and SHA-256 value. For JSON, serialize the value and use an appropriate JSON content type:
const record = { id: 42, status: "ready" };
await bucket.put("records/42.json", JSON.stringify(record), {
contentType: "application/json",
});
Use a stream for large files
For large files, the guide recommends a Node.js read stream rather than loading the full file into memory before upload. This keeps the application from needing a second in-memory copy of the entire object while preparing the request. Follow the installed driver’s stream input types when wiring a file stream into put.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Read, inspect, and delete objects
Retrieve content
Call bucket.get(key) to retrieve an object. Use text() for text content, json<T>() for JSON, or writeToFile(path) when the object should be written to disk.
const object = await bucket.get("notes/hello.txt");
const text = await object.text();
console.log(text);
const jsonObject = await bucket.get("records/42.json");
const record = await jsonObject.json<{ id: number; status: string }>();
Check metadata without downloading content
Use bucket.head(key) when you need metadata rather than the object body. The guide lists content type, content length, ETag, and SHA-256 among the available metadata.
const metadata = await bucket.head("records/42.json");
console.log(metadata);
Delete an object
Remove an object with bucket.delete(key):
await bucket.delete("notes/hello.txt");
List objects and handle errors
For a single page of results, use listPage({ prefix, limit }); it returns pagination metadata alongside that page. Use list({ prefix }) when you want the driver to paginate through results.
const page = await bucket.listPage({ prefix: "records/", limit: 100 });
console.log(page);
const allMatchingObjects = await bucket.list({ prefix: "records/" });
The driver documents structured error types for authentication failures, connection failures, not-found responses, quota errors, and general Bastion errors. Handle these according to the operation and recovery path: correct credentials for authentication, restore connectivity for connection failures, check the requested bucket or key for not-found errors, and respond to quota errors through the service’s configured limits. Avoid logging connection strings, passwords, or secret keys while diagnosing failures.
Plan network security for the deployment
The setup guide says local and private addresses normally resolve to HTTP on the native Bastion port; public domains can resolve to HTTPS. The product overview adds an important deployment boundary: the storage process itself does not terminate TLS. For a public deployment, place it behind a TLS-terminating reverse proxy such as Caddy or Nginx rather than assuming the storage process provides public HTTPS.
Best Value
Understand what V1 does—and does not—provide
Lioran S3 V1 is described as self-hosted and single-node, with bucket and object semantics and a native REST API. It is not currently a drop-in AWS S3 API compatibility layer. AWS S3 compatibility, lifecycle rules, webhooks, finer-grained policies, clustering, and replication are listed as roadmap items in the product overview, not current capabilities.
The overview also warns that pre-alpha APIs, storage formats, protocol details, SDK behavior, and operational assumptions may change. Treat the driver and the deployment as pre-alpha infrastructure: test upgrades and application behavior against the version and configuration you intend to run.
Media processing is experimental
The media subsystem is identified as experimental. Its listed functions include video transcoding and HLS generation, plus image resizing and conversion; the host needs ffmpeg and ffprobe. These are not presented as stable core storage features.
Free tools Windows power users keep installed
One-click scans. No signup required.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




