Skip to main content

Wallet Attached Storage Server

Python server for the Wallet Attached Storage specification, built with FastAPI.

Installation

pip install wallet-attached-storage-server

Usage

# Start the server
uvicorn was_server:app --port 8080

# Or with auto-reload for development
uvicorn was_server:app --reload --port 8080

The server exposes the full WAS API at the root path. Clients authenticate with Cavage draft-12 HTTP Signatures using Ed25519 did:key identifiers.

API

Spaces

Method Path Auth Description
PUT /space/{id} Yes Create or update a space
GET /space/{id} Yes Read space metadata
DELETE /space/{id} Yes Delete space and all its resources
POST /spaces/ Yes Create a space (server-generated ID)
GET /spaces/ Yes List spaces you control

Resources

Method Path Auth Description
GET /space/{id}/{path} No Read a resource
PUT /space/{id}/{path} Yes Create or update
POST /space/{id}/{path} Yes Create (returns 201)
DELETE /space/{id}/{path} Yes Delete (idempotent)

Authorization

Each space has a controller field set to a did:key DID. All write operations and space reads require an HTTP Signature whose signing key matches the space controller. Resource reads are unsigned (public).

Storage Backend

The server ships with an in-memory storage backend. The storage layer is defined as a Python protocol, so you can swap in a file, database, or S3 backend by implementing StorageBackend.

Development

uv run ruff check
uv run flake8 src tests
uv run bandit -r src
uv run bandit -r tests -s B101
uv run safety scan
uv run -m pytest -vv --cov=src --cov-report=term

CI runs all of the above on every push and PR (Python 3.11–3.14). To publish a release, tag and push:

git tag -sm "Initial release." "v0.1.0"
git push

Acceptance Tests

The companion client library includes a live test suite that runs against localhost:8080:

# Terminal 1
uv run uvicorn was_server:app --port 8080

# Terminal 2 (in the client repo)
uv run -m pytest tests/test_live.py -vv

References

Metadata

Release files for wallet-attached-storage-server 0.1.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 wallet-attached-storage-server 0.1.0
File Size Uploaded Provenance Actions
wallet_attached_storage_server-0.1.0.tar.gz 94.9 kB Without provenance Details for wallet_attached_storage_server-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for wallet-attached-storage-server 0.1.0
File Interpreter ABI Platform Actions
wallet_attached_storage_server-0.1.0-py3-none-any.whl Python 3 none any Details for wallet_attached_storage_server-0.1.0-py3-none-any.whl

Total release size: 104.2 kB

Release files / wallet_attached_storage_server-0.1.0.tar.gz

Download URL wallet_attached_storage_server-0.1.0.tar.gz
Size 94.9 kB
Tags Source
SHA-256 checksum
How to use checksums
163e953e3d72965df100dcdad2a72e7a39baf5add6778314ebab91c5f93a111d
BLAKE2b-256 checksum
How to use checksums
9babbe1f4e7a0c24dacc682d910eb153a85e3bf165ee5b22b4c13a0a5c703297
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / wallet_attached_storage_server-0.1.0-py3-none-any.whl

Download URL wallet_attached_storage_server-0.1.0-py3-none-any.whl
Size 9.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
41cd6fc0a950b4c5c9c031e20bf229b393efd15703f879d37717350951ece74a
BLAKE2b-256 checksum
How to use checksums
7f2eddf0f5c5bea5519ab752c858cbea3f02012bc46d75e1fe2f9145b55283bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for wallet-attached-storage-server 0.1.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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

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