# Quickstart (/protocol/quickstart)

## Already using S3?

Point your existing S3 client at Shelby. For most code, only the client configuration
changes:

```python
s3 = boto3.client(
    "s3",
    endpoint_url="https://s3.beta.shelby.xyz",  # [!code ++]
    aws_access_key_id=SHELBY_ACCESS_KEY_ID,  # [!code ++]
    aws_secret_access_key=SHELBY_SECRET_ACCESS_KEY,  # [!code ++]
    region_name="default",  # [!code ++]
    config=Config(
        s3={"addressing_style": "path"},  # [!code ++]
        request_checksum_calculation="when_required",  # [!code ++]
    ),
)
```

Get your bucket name, and an access key ID and secret for that bucket, at
[console.shelby.xyz](https://console.shelby.xyz),
then follow the quickstart for your client:

<Cards>
  <Card title="AWS CLI" href="/tools/s3-gateway/quickstarts/aws-cli" />

  <Card title="Python (boto3)" href="/tools/s3-gateway/quickstarts/python" />

  <Card title="JavaScript (AWS SDK v3)" href="/tools/s3-gateway/quickstarts/javascript" />

  <Card title="rclone" href="/tools/s3-gateway/quickstarts/rclone" />

  <Card title="DuckDB" href="/tools/s3-gateway/quickstarts/duckdb" />
</Cards>

Each quickstart also has a runnable version in
[shelby-quickstart](https://github.com/shelby/shelby-quickstart).

Before moving a production workload, read
[how Shelby differs from S3](/tools/s3-gateway#how-shelby-differs-from-s3).

## Using an AI agent?

The [MCP server](/tools/mcp) gives Claude, Cursor or your own agent read and write access
to your buckets, with no integration code.

## Learn more

* [How Shelby stores data](/protocol/architecture/overview)
* [Compatibility matrix](/tools/s3-gateway/compatibility)
