--- title: SeaweedFS icon: /images/seaweedfs-logo.svg description: Mount a SeaweedFS bucket as a virtual filesystem. --- The SeaweedFS resource is a thin wrapper over the [S3 resource](/python/resource/s3). It maps a `SeaweedFSConfig` to an `S3Config` and reuses the exact same backend, commands, and behavior as S3, it just points at your SeaweedFS S3 gateway `endpoint_url` and uses path-style addressing by default. SeaweedFS exposes an S3-compatible gateway (default port `8333`), so `endpoint_url` is **required** (there is no region-derived host). Uses aioboto3 against the SeaweedFS S3 API. ## Config ```python import os from mirage import MountMode, Workspace from mirage.resource.seaweedfs import SeaweedFSConfig, SeaweedFSResource config = SeaweedFSConfig( bucket=os.environ["SEAWEEDFS_BUCKET"], endpoint_url=os.environ.get("SEAWEEDFS_ENDPOINT", "http://localhost:8333"), access_key_id=os.environ["SEAWEEDFS_ACCESS_KEY"], secret_access_key=os.environ["SEAWEEDFS_SECRET_KEY"], # Optional: # region="us-east-1", # default # path_style=True, # default; SeaweedFS uses path-style addressing # timeout=30, # proxy="http://proxy:8080", ) resource = SeaweedFSResource(config) ws = Workspace({"/seaweedfs": resource}, mode=MountMode.WRITE) ``` Both `READ` and `WRITE` modes are supported. ## Example ```python import asyncio import os from dotenv import load_dotenv from mirage import MountMode, Workspace from mirage.resource.seaweedfs import SeaweedFSConfig, SeaweedFSResource load_dotenv(".env.development") config = SeaweedFSConfig( bucket=os.environ.get("SEAWEEDFS_BUCKET", "mirage-demo"), endpoint_url=os.environ.get("SEAWEEDFS_ENDPOINT", "http://localhost:8333"), access_key_id=os.environ.get("SEAWEEDFS_ACCESS_KEY", "any"), secret_access_key=os.environ.get("SEAWEEDFS_SECRET_KEY", "any"), ) resource = SeaweedFSResource(config) async def main() -> None: ws = Workspace({"/seaweedfs/": resource}, mode=MountMode.READ) r = await ws.execute("ls /seaweedfs/") print(await r.stdout_str()) r = await ws.execute("tree /seaweedfs/") print(await r.stdout_str()) r = await ws.execute("cat /seaweedfs/data/config.json") print(await r.stdout_str()) if __name__ == "__main__": asyncio.run(main()) ``` ## Notes - SeaweedFS reports `ResourceName.S3` and routes through the same `core/s3` implementation, so the full S3 shell-command set applies (`ls`, `cat`, `head`, `tail`, `grep`, `rg`, `wc`, `find`, `tree`, `jq`, `stat`, plus parquet/orc/feather table rendering). See the [S3 resource](/python/resource/s3) for the complete command reference, range reads, streaming, and the index cache fast path. - Blaxel Agent Drive is backed by SeaweedFS. To mount a drive's S3 gateway, point `endpoint_url` at the drive's `s3Url` and supply credentials for it. - For credential setup, see [SeaweedFS Setup](/home/setup/seaweedfs).