Skip to main content

nexus-fs

Unified filesystem abstraction for cloud storage. Mount S3, GCS, Google Workspace, and local storage with two lines of Python.

import nexus.fs

fs = nexus.fs.mount_sync("s3://my-bucket", "local://./data")
content = fs.read("/s3/my-bucket/README.md")

Install

pip install nexus-fs            # core (local only)
pip install nexus-fs[s3]        # + Amazon S3
pip install nexus-fs[gcs]       # + Google Cloud Storage
pip install nexus-fs[gdrive]    # + Google Drive
pip install nexus-fs[fsspec]    # + fsspec/pandas/dask integration
pip install nexus-fs[tui]       # + interactive TUI playground
pip install nexus-fs[all]       # everything

Quick Start

Async

import asyncio
import nexus.fs

async def main():
    fs = await nexus.fs.mount("s3://my-bucket", "local://./data")
    await fs.write("/local/data/hello.txt", b"Hello!")
    content = await fs.read("/local/data/hello.txt")
    print(content)

asyncio.run(main())

Sync

import nexus.fs

fs = nexus.fs.mount_sync("local://./data")
fs.write("/local/data/hello.txt", b"Hello!")
print(fs.read("/local/data/hello.txt"))

Connectors (Google Workspace, GitHub, Slack, etc.)

import nexus.fs

fs = nexus.fs.mount_sync("gws://sheets", "gws://docs")
# Uses gws CLI under the hood — no server needed

Prerequisite: gws:// mounts require the gws CLI to be installed and authenticated. Other connectors (GitHub, Slack) require OAuth credentials configured via environment variables — see nexus-fs doctor for diagnostics.

API

Method Description
read(path) Read file content
write(path, content) Write/overwrite file
ls(path, detail, recursive) List directory
stat(path) Get file metadata
exists(path) Check if path exists
delete(path) Delete a file
rename(old, new) Rename/move
copy(src, dst) Copy a file
mkdir(path) Create directory
list_mounts() List mount points

TUI Playground

pip install nexus-fs[tui]
nexus-fs playground s3://my-bucket local://./data

CLI

nexus-fs mount s3://my-bucket
nexus-fs mount list
nexus-fs mount test s3://my-bucket
nexus-fs unmount s3://my-bucket

Note: The TUI uses direct backend access for low-latency browsing. File operation semantics in the playground may differ from the library API (e.g., metadata fields, error messages). The library API (mount() / mount_sync()) is the authoritative interface. TUI/library unification is planned for a future release.

State Directory

nexus-fs stores runtime state (metadata DB, mount config) in a platform-specific directory. This state is a cache — it can be safely deleted and will be recreated on the next mount() call.

Platform Default path
Linux ~/.local/state/nexus-fs/
macOS ~/Library/Application Support/nexus-fs/
Windows %LOCALAPPDATA%/nexus-fs/

Override with the NEXUS_FS_STATE_DIR environment variable.

Persistent secrets (OAuth tokens, encryption keys) are stored separately under ~/.nexus/ with restricted permissions (0700). Override with NEXUS_FS_PERSISTENT_DIR.

Concurrency: nexus-fs is designed for single-process use per state directory. To run multiple independent instances, set a different NEXUS_FS_STATE_DIR for each process.

Relationship to nexus-ai-fs

nexus-fs is the slim standalone cloud storage package (~16 dependencies). nexus-ai-fs is the full Nexus filesystem/context plane (~100+ dependencies) that includes server, bricks, gRPC, federation, and more.

Both packages install into the nexus Python namespace. Do not install both in the same environment — they will conflict. Choose one:

  • pip install nexus-fs — lightweight cloud storage only
  • pip install nexus-ai-fs — full Nexus system (includes all nexus-fs functionality)

License

Apache-2.0

Metadata

Release files for nexus-fs 0.10.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nexus-fs 0.10.0
File Size Uploaded Provenance
nexus_fs-0.10.0.tar.gz 2.9 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for nexus-fs 0.10.0
File Interpreter ABI Platform
nexus_fs-0.10.0-py3-none-any.whl Python 3 none any Details

Total release size: 3.8 MB

Release files / nexus_fs-0.10.0.tar.gz

Download URL nexus_fs-0.10.0.tar.gz
Size 2.9 MB
Tags Source
SHA-256 checksum
How to use checksums
0e96846c23281ef40ca600b97894d8a07eac9738fb86d5d3e5365fa47374b9f4
BLAKE2b-256 checksum
How to use checksums
c5a22c55df315ed95156ab59d9c31dbc32a7b4a6f945c4029997505f3ed48165
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / nexus_fs-0.10.0-py3-none-any.whl

Download URL nexus_fs-0.10.0-py3-none-any.whl
Size 975.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fb2c1cd586343c3d0e449a785a44f0e37222e6751af7c13498f8c3aafd856745
BLAKE2b-256 checksum
How to use checksums
8bd17f9d94f433a978a1097e777085d1a4ddc336916832439e97a919bee8d4b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Security for nexus-fs 0.10.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page