Skip to main content

stateset-embedded

Local-first embedded commerce library for Python, powered by Rust.

Installation

pip install stateset-embedded

Optional framework adapters:

pip install "stateset-embedded[langchain]"
pip install "stateset-embedded[crewai]"
pip install "stateset-embedded[autogen]"
# or install all Python framework helpers together
pip install "stateset-embedded[agents]"

Or build from source:

cd bindings/python
pip install maturin
maturin develop

Quick Start

from stateset_embedded import Commerce, CreateOrderItemInput

# Initialize with SQLite database
commerce = Commerce("./store.db")

# Or use in-memory database for testing
commerce = Commerce(":memory:")

# Create a customer
customer = commerce.customers.create(
    email="alice@example.com",
    first_name="Alice",
    last_name="Smith"
)
print(f"Created customer: {customer.id}")

# Create a product with variant
product = commerce.products.create(
    name="Premium Widget",
    description="A high-quality widget"
)

# Create inventory
item = commerce.inventory.create_item(
    sku="WIDGET-001",
    name="Premium Widget",
    initial_quantity=100
)

# Check stock
stock = commerce.inventory.get_stock("WIDGET-001")
print(f"Available: {stock.total_available}")

# Create an order
order = commerce.orders.create(
    customer_id=customer.id,
    items=[
        CreateOrderItemInput(
            sku="WIDGET-001",
            name="Premium Widget",
            quantity=2,
            unit_price=29.99
        )
    ]
)
print(f"Order {order.order_number}: ${order.total_amount}")

# Ship the order
commerce.orders.ship(order.id, tracking_number="1Z999AA10123456784")

# Analytics
summary = commerce.analytics.sales_summary(period="last30days")
print(f"Revenue: ${summary.total_revenue}")

# Currency conversion (set a rate, then convert)
commerce.currency.set_rate("USD", "EUR", 0.92, source="manual")
conversion = commerce.currency.convert("USD", "EUR", 100.0)
print(f"$100 USD = €{conversion.converted_amount} EUR")

Agent Toolkit

The Python package also ships a native agent toolkit for core embedded commerce operations:

from stateset_embedded import Commerce, create_embedded_agent_toolkit

commerce = Commerce(":memory:")
toolkit = create_embedded_agent_toolkit(commerce, allow_apply=False)

openai_tools = toolkit.get_tools(format="openai")
descriptors = toolkit.create_tool_descriptors(
    filter=["list_customers", "list_orders", "get_sales_summary"]
)
callable_registry = toolkit.create_callable_registry(filter=["list_customers"])
langchain_tools = toolkit.create_langchain_tools(filter=["list_customers"])

execution = toolkit.execute_openai_tool_call(
    {
        "call_id": "py_demo_1",
        "function": {
            "name": "list_customers",
            "arguments": "{\"limit\": 5}",
        },
    }
)
print(execution["output_message"])

This toolkit is aimed at Python agent runtimes such as CrewAI- or AutoGen-style hosts that need core commerce operations in-process. Use the JS toolkit or MCP server when you need the full registry-generated tool surface and policy runtime.

OpenAI-compatible helper methods are available out of the box, and the framework-specific helpers are available when the corresponding framework packages are installed:

  • create_tool_descriptors()
  • create_callable_registry()
  • execute_tool() and execute_tool_calls()
  • create_openai_tools()
  • create_langchain_tools()
  • create_crewai_tools()
  • create_autogen_tools()

Each helper also accepts a tool_factory callback so you can generate your own framework objects from the native descriptors.

The package also exposes helper modules for direct imports:

from stateset_embedded.generic import create_tool_descriptors, create_callable_registry
from stateset_embedded.openai import create_openai_tools, execute_openai_tool_call
from stateset_embedded.langchain import create_langchain_tools
from stateset_embedded.crewai import create_crewai_tools
from stateset_embedded.autogen import create_autogen_tools

descriptors = create_tool_descriptors(commerce, filter=["list_customers"])
registry = create_callable_registry(commerce, filter=["list_customers"])
openai_tools = create_openai_tools(commerce, filter=["list_customers"])
langchain_tools = create_langchain_tools(commerce, filter=["list_customers"])
crewai_tools = create_crewai_tools(commerce, filter=["count_customers"])
autogen_tools = create_autogen_tools(commerce, filter=["get_sales_summary"])

Runnable repo examples for those module imports live in:

  • examples/python/openai_tools.py
  • examples/python/generic_tools.py
  • examples/python/langchain_tools.py
  • examples/python/crewai_tools.py
  • examples/python/autogen_tools.py
  • examples/python/framework_adapters.py

Sequencer Sync

from stateset_embedded import SyncRuntime
import json

runtime = SyncRuntime(json.dumps({
    "sequencer_base_url": "http://127.0.0.1:4000",
    "engine": {
        "agent_id": "agent-1",
        "tenant_id": "tenant-1",
        "store_id": "store-1",
        "outbox_path": "/tmp/stateset-sync-outbox.json",
        "state_path": "/tmp/stateset-sync-state.json"
    },
    "agent_key_id": 7
}))

runtime.record(
    "order.created",
    "order",
    "ORD-1001",
    json.dumps({"total": 42.50}),
    command_id="cmd-1001",
)

push = runtime.push()
status = runtime.status()
print(push.remote_head)
print(status.caught_up)

SyncRuntime mirrors the Rust SDK sync surface for local event recording, sequencer health checks, remote-head refresh, push/pull/full-sync operations, and inspection of confirmations, dead letters, and buffered pulled events. Typed Python classes are available for the main sync surfaces, and the JSON helpers remain available when a serialized view is more convenient.

Features

  • Local-First: All data stored in SQLite, works offline
  • Zero Dependencies: Single native extension, no external services
  • Type Safe: Full type hints and IDE support
  • Fast: Native Rust performance
  • Analytics + Currency: Built-in reporting/forecasting and multi-currency operations
  • Vector Search: Semantic search for products/customers (opt-in, OpenAI embeddings)

API Reference

Commerce

Main entry point for all operations.

commerce = Commerce("./store.db")  # SQLite file
commerce = Commerce(":memory:")     # In-memory database

Customers

# Create
customer = commerce.customers.create(
    email="alice@example.com",
    first_name="Alice",
    last_name="Smith",
    phone="+1234567890",
    accepts_marketing=True
)

# Get by ID or email
customer = commerce.customers.get(customer_id)
customer = commerce.customers.get_by_email("alice@example.com")

# List all
customers = commerce.customers.list()

# Count
count = commerce.customers.count()

Orders

# Create
order = commerce.orders.create(
    customer_id=customer.id,
    items=[
        CreateOrderItemInput(
            sku="SKU-001",
            name="Product Name",
            quantity=2,
            unit_price=29.99
        )
    ],
    currency="USD",
    notes="Gift wrap please"
)

# Get
order = commerce.orders.get(order_id)

# List all
orders = commerce.orders.list()

# Update status
order = commerce.orders.update_status(order_id, "processing")

# Ship with tracking
order = commerce.orders.ship(order_id, tracking_number="1Z123...")

# Cancel
order = commerce.orders.cancel(order_id)

Products

# Create with variants
from stateset_embedded import CreateProductVariantInput

product = commerce.products.create(
    name="Premium Widget",
    description="High-quality widget",
    variants=[
        CreateProductVariantInput(
            sku="WIDGET-SM",
            price=19.99,
            name="Small"
        ),
        CreateProductVariantInput(
            sku="WIDGET-LG",
            price=29.99,
            name="Large"
        )
    ]
)

# Get by ID
product = commerce.products.get(product_id)

# Get variant by SKU
variant = commerce.products.get_variant_by_sku("WIDGET-SM")

# List all
products = commerce.products.list()

Inventory

# Create inventory item
item = commerce.inventory.create_item(
    sku="WIDGET-001",
    name="Premium Widget",
    description="High-quality widget",
    initial_quantity=100,
    reorder_point=10
)

# Check stock levels
stock = commerce.inventory.get_stock("WIDGET-001")
print(f"On hand: {stock.total_on_hand}")
print(f"Allocated: {stock.total_allocated}")
print(f"Available: {stock.total_available}")

# Adjust stock
commerce.inventory.adjust("WIDGET-001", -5, "Sold 5 units")
commerce.inventory.adjust("WIDGET-001", 50, "Received shipment")

# Reserve for order
reservation = commerce.inventory.reserve(
    sku="WIDGET-001",
    quantity=2,
    reference_type="order",
    reference_id=order_id,
    expires_in_seconds=3600  # 1 hour
)

# Confirm reservation (deducts from on-hand)
commerce.inventory.confirm_reservation(reservation.id)

# Or release reservation (returns to available)
commerce.inventory.release_reservation(reservation.id)

Vector Search

# Initialize vector search (requires OpenAI API key)
vector = commerce.vector("sk-...")

# Index a product or customer
vector.index_product(product.id)

# Semantic search
results = vector.search_products("wireless bluetooth headphones", limit=10)
for r in results:
    print(r.id, r.score, r.name)

# Stats/maintenance
stats = vector.stats()
vector.clear("products")

Returns

from stateset_embedded import CreateReturnItemInput

# Create return request
ret = commerce.returns.create(
    order_id=order.id,
    reason="defective",
    items=[
        CreateReturnItemInput(
            order_item_id=order.items[0].id,
            quantity=1
        )
    ],
    reason_details="Product arrived damaged"
)

# Get return
ret = commerce.returns.get(return_id)

# Approve return
ret = commerce.returns.approve(return_id)

# Reject return
ret = commerce.returns.reject(return_id, "Item was used")

# List all returns
returns = commerce.returns.list()

Carts / Checkout

from stateset_embedded import CartAddress, AddCartItemInput

# Create a cart (guest checkout)
cart = commerce.carts.create(customer_email="alice@example.com", currency="USD")

# Add items
commerce.carts.add_item(
    cart_id=cart.id,
    item=AddCartItemInput(
        sku="SKU-001",
        name="Widget",
        quantity=2,
        unit_price=29.99,
    ),
)

# Set shipping (address + selection)
address = CartAddress(
    first_name="Alice",
    last_name="Smith",
    line1="123 Main St",
    city="San Francisco",
    postal_code="94105",
    country="US",
)
cart = commerce.carts.set_shipping(
    cart.id,
    address,
    shipping_method="standard",
    shipping_carrier="ups",
    shipping_amount=9.99,
)

# Reserve inventory for cart items (optional)
cart = commerce.carts.reserve_inventory(cart.id)

# Complete checkout (creates an order)
result = commerce.carts.complete(cart.id)
print(result.order_number)

Analytics

# Sales summary
summary = commerce.analytics.sales_summary(period="last30days")
print(summary.total_revenue, summary.order_count)

# Top products / customers
top_products = commerce.analytics.top_products(period="this_month", limit=10)
top_customers = commerce.analytics.top_customers(period="all_time", limit=10)

# Forecasting
forecasts = commerce.analytics.demand_forecast(days_ahead=30)
revenue = commerce.analytics.revenue_forecast(periods_ahead=3, granularity="month")

Currency

# Set an exchange rate
commerce.currency.set_rate("USD", "EUR", 0.92, source="manual")

# Convert currency
conversion = commerce.currency.convert("USD", "EUR", 100.0)
print(conversion.converted_amount)

# Store settings
settings = commerce.currency.get_settings()
settings = commerce.currency.enable_currencies(["USD", "EUR", "GBP"])

Order Statuses

  • pending - Order created, awaiting confirmation
  • confirmed - Order confirmed
  • processing - Order being processed
  • shipped - Order shipped
  • delivered - Order delivered
  • cancelled - Order cancelled
  • refunded - Order refunded

Return Reasons

  • defective - Product is defective
  • not_as_described - Product not as described
  • wrong_item - Wrong item received
  • no_longer_needed - No longer needed
  • changed_mind - Changed mind
  • better_price_found - Found better price elsewhere
  • damaged - Product arrived damaged
  • other - Other reason

Development

# Install dev dependencies
pip install maturin pytest

# Build in development mode
maturin develop

# Run tests
pytest tests/

# Build release wheel
maturin build --release

License

MIT OR Apache-2.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stateset_embedded-1.23.0.tar.gz (2.0 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

stateset_embedded-1.23.0-cp312-cp312-win_amd64.whl (7.9 MB view details)

Uploaded CPython 3.12Windows x86-64

stateset_embedded-1.23.0-cp312-cp312-manylinux_2_34_x86_64.whl (8.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

stateset_embedded-1.23.0-cp312-cp312-macosx_11_0_arm64.whl (7.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

stateset_embedded-1.23.0-cp311-cp311-win_amd64.whl (7.9 MB view details)

Uploaded CPython 3.11Windows x86-64

stateset_embedded-1.23.0-cp311-cp311-manylinux_2_34_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

stateset_embedded-1.23.0-cp311-cp311-macosx_11_0_arm64.whl (7.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

stateset_embedded-1.23.0-cp310-cp310-win_amd64.whl (7.9 MB view details)

Uploaded CPython 3.10Windows x86-64

stateset_embedded-1.23.0-cp310-cp310-manylinux_2_34_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

stateset_embedded-1.23.0-cp310-cp310-macosx_11_0_arm64.whl (7.3 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

stateset_embedded-1.23.0-cp39-cp39-win_amd64.whl (7.9 MB view details)

Uploaded CPython 3.9Windows x86-64

stateset_embedded-1.23.0-cp39-cp39-manylinux_2_34_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.34+ x86-64

stateset_embedded-1.23.0-cp39-cp39-macosx_11_0_arm64.whl (7.3 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

stateset_embedded-1.23.0-cp38-cp38-win_amd64.whl (7.9 MB view details)

Uploaded CPython 3.8Windows x86-64

stateset_embedded-1.23.0-cp38-cp38-manylinux_2_34_x86_64.whl (8.3 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.34+ x86-64

stateset_embedded-1.23.0-cp38-cp38-macosx_11_0_arm64.whl (7.3 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

Details for the file stateset_embedded-1.23.0.tar.gz.

File metadata

  • Download URL: stateset_embedded-1.23.0.tar.gz
  • Upload date:
  • Size: 2.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for stateset_embedded-1.23.0.tar.gz
Algorithm Hash digest
SHA256 a9139a31c51c3e20eb969c677b563cc7436524295093e8841fab8d794424943e
MD5 7477e98b5eb3a3f5dd67aa041df56ccb
BLAKE2b-256 684496a64d9f8b635306461c1cad9b0e79dad87df1718e512ddc2357700c45bc

See more details on using hashes here.

File details

Details for the file stateset_embedded-1.23.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for stateset_embedded-1.23.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 86c6c03e792c06c0b0351cb157be012f05502c7edf8743f6dac79a60b16920de
MD5 d8e00596a67fb8981eef695c8887a894
BLAKE2b-256 c4e349d586e826119d89463b7af79d84751e69f87ca05a04a3060c7fd5e4baba

See more details on using hashes here.

File details

Details for the file stateset_embedded-1.23.0-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for stateset_embedded-1.23.0-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 ae44c9d3a5b94816eee5b963a167993c879351cf848f9e4f2b47b875da29f8a9
MD5 e83281607897f6d17bb920063390f0be
BLAKE2b-256 37beae690686b002d2d5d37e3e859d51f85508b42cac08f75611ecc028fbabd3

See more details on using hashes here.

File details

Details for the file stateset_embedded-1.23.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for stateset_embedded-1.23.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d277c024c627a26e0d30d4dd3d2bd046b350fec7a2cf26546b2d665bd0c10c32
MD5 d878fa27e6dc93791b331d97933c8fc2
BLAKE2b-256 32d4cfcf545c8a6cb7e283f1967906bd93b62f7ad84ef590292c655f1c5f7971

See more details on using hashes here.

File details

Details for the file stateset_embedded-1.23.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for stateset_embedded-1.23.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 63008439379b7e6304dd7cf6b848ec7d188e55d2f9891c2d59d4890cd1e3a5ed
MD5 c0c94e80ce8c7fc1e1985c1e48b8bb89
BLAKE2b-256 d916d41df48fd3475b1b150c8009094acac6e5c0404b7707bf73a7b9b3fdda8c

See more details on using hashes here.

File details

Details for the file stateset_embedded-1.23.0-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for stateset_embedded-1.23.0-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0a99c23fccf925dde8ec37a5b005e108d6ac2c55713662da4f46a582d637d432
MD5 07f0cb42df528be013983ef8e5c6a1b2
BLAKE2b-256 ad0f3c06b99d1f5f2de777ea9ddcef1239a750fea98e3464b4d75777925b0956

See more details on using hashes here.

File details

Details for the file stateset_embedded-1.23.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for stateset_embedded-1.23.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3295703dc3d20e31eff6c74b88a294fe2dae53f49679731deca5519846c4edb8
MD5 745f92e31d8303ee06cb4d144137fed0
BLAKE2b-256 58392d756153e034ce9b410834734e1c6c29387ad7ecc61b4740a7d4faed1245

See more details on using hashes here.

File details

Details for the file stateset_embedded-1.23.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for stateset_embedded-1.23.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4ee5541ed08aa7d2e0568411321a6d475cbeee81cd3d07741047f06aad696afe
MD5 8e4750c1e852105bc9b5c8ba46aa56f6
BLAKE2b-256 048bca59411323893438f4149624df760f23bd1e3af9f310032b41cb22f65c1e

See more details on using hashes here.

File details

Details for the file stateset_embedded-1.23.0-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for stateset_embedded-1.23.0-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 6a7545a514510c06e64a248abdd5a9fa61b0446844c6bfa6abd87bfe07ff58e1
MD5 e5a59df1a5b8e4a08f8c359d35c17fa1
BLAKE2b-256 b232b20bdc4ed47d5c925355502de8f339457b223bdaed964c46dc9a96e4c4a7

See more details on using hashes here.

File details

Details for the file stateset_embedded-1.23.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for stateset_embedded-1.23.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8abbe5480e75b685310ef77c4afec9495f3d2365294c559d9f2989c45af6f818
MD5 4410b11bf4e1c69a0616af435a0636e4
BLAKE2b-256 f753a571237ca62b2d1115a780f0946c729f608ad639ac4dfa52ab72a6039b56

See more details on using hashes here.

File details

Details for the file stateset_embedded-1.23.0-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for stateset_embedded-1.23.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 c425408c28ed4145b1631462af496f3b56c20be0fef054a24353996c968cfcbd
MD5 d5cb46df124d5f5b69adbf42e3932bdb
BLAKE2b-256 448608cc98572e6ec8ecf023ced573770a136c36a72e8edb10f36a68781595f1

See more details on using hashes here.

File details

Details for the file stateset_embedded-1.23.0-cp39-cp39-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for stateset_embedded-1.23.0-cp39-cp39-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0e1028ba03cb2ceb742429060b1938182d462ab297d895c70177e501dff5abaa
MD5 b5e4df973be686f4ccf98b6bf402d6a3
BLAKE2b-256 20479efa88c8df760962ae975228ee8565ab475220e41eb8aad6363596076a8a

See more details on using hashes here.

File details

Details for the file stateset_embedded-1.23.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for stateset_embedded-1.23.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1b6d20a4418cbc4b38d69b7554a189fab6d561feb0747827f1f99235841b04e7
MD5 af35e50e60b0e63058d909c26e330cdf
BLAKE2b-256 510a30d3b7cfdeb5c792173f97efe066e937fc108598a7432f8ce68b749e3bb3

See more details on using hashes here.

File details

Details for the file stateset_embedded-1.23.0-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for stateset_embedded-1.23.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 b2193532be3e5cd2d2ef5d2ff273c7bf7a4528fb36d281b95c9bfc48dc058277
MD5 256fd1936f2b57422781406812251891
BLAKE2b-256 9f6eb31cc1f37bcd70d04853e296f8ccd2bc698ab03ebb07c6e31ae493db69e6

See more details on using hashes here.

File details

Details for the file stateset_embedded-1.23.0-cp38-cp38-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for stateset_embedded-1.23.0-cp38-cp38-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d42f7b917b859ec432f0dcf45f97c35393485be50aa4ae09fd2926c1b5f017a4
MD5 426f6191bd5e253c7ef79cb544c6a5d7
BLAKE2b-256 2f9e1cadec680c3176d62620aada161ca83e590ef9aff4b209ff4f9d75bfeaaa

See more details on using hashes here.

File details

Details for the file stateset_embedded-1.23.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for stateset_embedded-1.23.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5e5739386b46e42035f3fe44dec2d00c65b63418533c18ecfa0d277f39fdd091
MD5 c3ab11ce07805f98476faeaa75505538
BLAKE2b-256 857ed6d559e0155c80886e8a1ad5b10d20135fd9a0f5ec257057a50909def598

See more details on using hashes here.

Release history Release notifications | RSS feed

1.28.1

26 files

1.27.0

26 files

1.26.0

26 files

1.25.0

26 files

1.24.0

26 files

1.23.6

26 files

1.23.5

26 files

1.23.4

26 files

1.23.3

26 files

This release

1.23.0 This release

16 files

0.2.0

2 files

0.1.9

2 files

0.1.7

2 files

0.1.6

2 files

0.1.4

2 files

0.1.3

2 files

0.1.0

2 files

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