Skip to content
P
Personal workspaceYour services, together
WorkspaceDocumentation

FIRESTARTER STORAGE · DOCUMENTATION

Storage documentation

Sign in with your wallet and add prepaid USDC credit. Use PipeBox to manage files in your browser, or connect your S3 client.

S3 compatibilityRead the compatibility notes before moving a production bucket.

PIPEBOX

Your files, without the code

Open PipeBox to upload, organize, and download files in your browser. Connect your Solana wallet and sign in, then add credit in Billing if you are getting started. PipeBox uses the same storage balance as your console.

  1. Open your files after signing in.
  2. Drag files into the window or choose Upload files.
  3. Create folders to organize your files.
  4. Select a file to download or delete it.

Uploads and downloads use the current storage rates. Deletion is permanent; PipeBox does not have a trash folder or version history. Keep a separate copy of files you need to recover.

01 · QUICKSTART

Upload your first file

Connect your wallet and sign in to the storage workspace. Add prepaid USDC credit, wait for payment confirmation, then create a scoped S3 API key. Configure your S3 client with the credentials and your storage endpoint, create a bucket, and upload a file. Your client must use path-style addressing, and your key must allow the bucket you choose.

S3 client configurationEndpoint: https://api.pipedev.networkRegion: us-east-1 (or any explicit client region)

AWS CLI

export PIPE_STORAGE_ENDPOINT='https://api.pipedev.network'
export AWS_ACCESS_KEY_ID='<access key>'
export AWS_SECRET_ACCESS_KEY='<secret shown once>'
export AWS_DEFAULT_REGION=us-east-1
export AWS_REQUEST_CHECKSUM_CALCULATION=when_required
export AWS_RESPONSE_CHECKSUM_VALIDATION=when_required
aws configure set default.s3.addressing_style path

aws --endpoint-url "$PIPE_STORAGE_ENDPOINT" \
  s3api create-bucket --bucket example
aws --endpoint-url "$PIPE_STORAGE_ENDPOINT" \
  s3 cp ./photo.jpg s3://example/photo.jpg
aws --endpoint-url "$PIPE_STORAGE_ENDPOINT" \
  s3 cp s3://example/photo.jpg ./download.jpg

02 · BILLING

How prepaid USDC credit works

Pipe credit is purchased with Circle USDC on Solana. Your wallet approves the amount shown at checkout. Once payment is confirmed and credit appears in your account, you can create an S3 key.

WritesCharged by bytes written. Replication is included in the write rate.
ReadsCharged by bytes served to the client.
MultipartOnly the completed object is billed. Temporary upload parts are not charged separately.

Open Billing for current service rates, available top-up amounts, and payment history. The dashboard shows available, spent, and reserved credit. If a payment is interrupted, return to Billing to resume or check its status before starting another.

03 · ACCESS

Scope every S3 key

Creating an S3 key requires purchased Pipe credit. Sign in with your wallet and fund your account. You can then create a key for your wallet or a linked storage identity and limit it to specific buckets and an optional object prefix.

Open the S3 API keys panel after credit appears in your account and choose Create API key. The panel also lets you rotate or revoke existing keys. Existing secret keys cannot be recovered; rotation issues a new secret before disabling the old key.

01Connect your wallet and sign inConnect a Solana wallet and approve the pipe.network login message.
02Open BillingAdd shared Pipe credit in Billing and wait for confirmation before creating a key.
03Create S3 credentialsSet the bucket scope and copy the secret into your secret manager. It is displayed once.
04Upload your first objectConfigure your client with your storage endpoint and new credentials, then upload to an allowed bucket.

Link a CLI identity

Use Linked accounts to manage an existing CLI storage identity from your wallet. Linking requires signatures from both your connected wallet and the CLI identity. Enter its public key and signed proof; keep its private key in your CLI environment.

Never paste an S3 secret into a browser bundle, commit it, or share it in a support ticket.

04 · S3 COMPATIBILITY

What works with standard clients

Use the credentials from your environment for the examples below. Configure optional request and response checksums only when required; checksum trailers are not supported.

Use SigV4 headers or presigned URLs for ordinary fixed-payload requests. Buckets are virtual namespaces constrained by each credential's scope.

Global bucket enumeration (ListBuckets) is not supported. Specify your bucket directly, for example aws s3 ls s3://example with the storage endpoint.

BucketHEAD · PUT · DELETE · ListObjectsV2
ObjectPUT · GET · HEAD · DELETE · byte ranges
MultipartCreate · upload part · list · complete · abort
AuthSigV4 headers · fixed presigned URLs

Python · boto3

import boto3

# AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY come from your environment.
s3 = boto3.client(
    "s3",
    endpoint_url="https://api.pipedev.network",
    region_name="us-east-1",
    config=boto3.session.Config(
        signature_version="s3v4",
        s3={"addressing_style": "path"},
        request_checksum_calculation="when_required",
        response_checksum_validation="when_required",
    ),
)
s3.put_object(Bucket="example", Key="hello.txt", Body=b"hello")

JavaScript · AWS SDK v3

import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";

// Credentials are read from your server environment.
const s3 = new S3Client({
  endpoint: "https://api.pipedev.network",
  region: "us-east-1",
  forcePathStyle: true,
  requestChecksumCalculation: "WHEN_REQUIRED",
  responseChecksumValidation: "WHEN_REQUIRED",
});

await s3.send(new PutObjectCommand({
  Bucket: "example",
  Key: "hello.txt",
  Body: "Hello, Firestarter!",
}));

05 · MULTIPART

Large objects, assembled on complete

Multipart uploads keep each part durable and replaceable, then materialize one final object when the completion list is accepted. The upload book survives router failover.

For files larger than 64 MiB, use multipart uploads with 8 MiB parts. A single large request can exceed the public gateway's request-size limit. With these settings, AWS CLI manages the multipart upload for aws s3 cp:

aws configure set default.s3.multipart_threshold 64MB
aws configure set default.s3.multipart_chunksize 8MB
1CreateMultipartUploadReceive an upload ID for a bucket and key.
2UploadPartSend parts 1–10,000. Reusing a part number replaces the prior part.
3ListPartsInspect durable parts and their quoted BLAKE3 ETags.
4CompleteMultipartUploadSubmit a sorted, unique XML list; parts stream in order into the final write.
Multipart ETags are quoted Lattice BLAKE3 hashes, not AWS MD5 multipart ETags.

06 · STREAMING

AWS streaming-chunk signatures

PutObject and UploadPart accept AWS's chained streaming payload mode for clients that cannot precompute a fixed body hash. The router verifies each framed chunk before forwarding decoded bytes to storage.

x-amz-content-sha256: STREAMING-AWS4-HMAC-SHA256-PAYLOAD
content-encoding: aws-chunked
x-amz-decoded-content-length: <decoded bytes>
ChainedEvery chunk signature uses the previous signature as its seed.
BoundedIndividual chunks default to 16 MiB and are capped by the service.
TerminalThe signed zero-length final chunk is required.

Trailer signatures, checksum trailers, SigV4a, and presigned streaming requests are not part of the v1 contract.

07 · BOUNDARIES

Know the service limits

Multipart expirationUploads expire after 24 hours by default; terminal records remain for another 24 hours for idempotent retries.
Completion XMLCompleteMultipartUpload bodies are limited to 2 MiB.
Single-range readsOne range request is limited to a 32 MiB window.
Not supportedVersioning, lifecycle rules, object lock, managed SSE/KMS, ACLs, object tags, UploadPartCopy, browser POST forms, and checksum trailers.
Pipe object ETags are content identities, not AWS's MD5 or multipart-MD5 values. Do not build integrity checks around AWS ETag assumptions.