---
title: "Daytona vs Fly.io Sprites."
description: "Compare Daytona and Fly.io Sprites sandbox behavior through Wildflower Computer, including images, TTLs, output streams, and portability limits."
canonical: "https://wildflower.computer/compare/daytona-vs-sprites/"
openapi_version: "0.8.0"
source_revision: "788b7325a454b8b753a7d614247d5694bad5c967"
---

# Daytona vs Fly.io Sprites.

Daytona accepts container images and rounded TTL minutes. Sprites exposes a fixed environment with automatic sleep and separate output streams. Wildflower Computer keeps the surrounding lifecycle calls the same while leaving these differences visible.

## Capability comparison

| Concern | Daytona | Fly.io Sprites |
| --- | --- | --- |
| Provider value | `daytona` | `sprites` |
| Image | The image field is a container image. The adapter generates a one-line Dockerfile using that image. | Sprites uses a fixed environment. The adapter rejects image rather than silently ignoring it. |
| Lifetime | The API accepts seconds and the adapter rounds them up to whole Daytona TTL minutes. | Sprites automatically sleeps and persists until deletion. The adapter rejects timeout. |
| Command output | Daytona returns combined command output. The adapter places it in stdout and returns an empty stderr. | The adapter preserves separate stdout and stderr frames and returns the command exit code. |
| Credential | Daytona API key | Fly.io Sprites API token |

## One create endpoint, explicit provider input

The endpoint and authentication boundary are shared. The request body changes only where the selected provider's supported creation inputs differ.

```bash
# Daytona
curl --fail-with-body "$WILDFLOWER_URL/v1/sandboxes" \
  -H "Authorization: Bearer $WILDFLOWER_API_KEY" \
  -H "X-Provider-Api-Key: $LEFT_PROVIDER_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{  "provider": "daytona",  "image": "ubuntu:22.04",  "timeout": 300}'

# Fly.io Sprites
curl --fail-with-body "$WILDFLOWER_URL/v1/sandboxes" \
  -H "Authorization: Bearer $WILDFLOWER_API_KEY" \
  -H "X-Provider-Api-Key: $RIGHT_PROVIDER_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{  "provider": "sprites"}'
```

## What is portable

- The create, get, runCommand, and delete methods across generated SDKs.
- Normalized sandbox IDs, provider values, status, and metadata.
- Command, working-directory, and environment inputs for execution.
- Normalized stdout, stderr, and exitCode response fields.

## What is not automatically portable

Existing sandbox state is not transferred between Daytona and Fly.io Sprites. An ID stays bound to the provider selected at creation. Images and lifetimes also retain the semantics shown above.

## Current limitations

### Daytona

- Timeout precision is one minute after adapter rounding.
- Standard output and standard error are not separable in the synchronous Daytona command response.
- The sandbox remains attached to Daytona for its complete lifecycle.

### Fly.io Sprites

- Image selection is not supported by the current adapter.
- A sandbox lifetime timeout is not supported by the current adapter.
- A cold Sprite can initially report stopped and wakes on its first command.

## Read the underlying support pages

- [Daytona sandbox API capabilities and limitations](https://wildflower.computer/providers/daytona/)
- [Fly.io Sprites sandbox API capabilities and limitations](https://wildflower.computer/providers/sprites/)
- [Full provider compatibility matrix](https://wildflower.computer/compatibility/)
- [Shared lifecycle quickstart](https://wildflower.computer/docs/getting-started/)

> **Create · get · runCommand · delete** — Shared lifecycle Provider choice remains fixed for the lifetime of each sandbox.
