Skip to main content
Stashy serves all protocols from a single endpoint using Vanguard transcoding. No separate ports or gateways needed.

Supported Protocols

ProtocolTransportUse case
RESTHTTP/1.1 or HTTP/2curl, any HTTP client
gRPCHTTP/2 (h2c)Go, Java, Python gRPC clients
ConnectHTTP/1.1 or HTTP/2connectrpc clients (Go, TypeScript)
gRPC-WebHTTP/1.1 or HTTP/2Browser clients

REST

Standard HTTP — works with curl, fetch, or any HTTP library:
curl -H "Authorization: Bearer $API_KEY" \
  -X POST http://localhost:8080/api/v1/files \
  -H "Content-Type: image/png" \
  --data-binary @photo.png

gRPC

Connect using any gRPC client with h2c (plaintext HTTP/2):
conn, _ := grpc.Dial("localhost:8080", grpc.WithTransportCredentials(insecure.NewCredentials()))
client := stashyv1alpha1.NewStorageServiceClient(conn)

Connect (connectrpc)

client := stashyv1alpha1connect.NewStorageServiceClient(
    http.DefaultClient,
    "http://localhost:8080",
)

Proto Definition

The service is defined in proto/stashy/v1alpha1/stashy.proto. Regenerate with:
just generate