Fan out to thousands.
Pay for active seconds.
Fan out to thousands of containers for batch jobs, evals and dataset processing. Map a function over a list — we handle the queue, retries, autoscaling and aggregation.
1from asc import Function 2 3@Function(cpu=1, memory="1Gi", concurrency_limit=500) 4def embed(text: str) -> list[float]: 5 from sentence_transformers import SentenceTransformer 6 model = SentenceTransformer("all-MiniLM-L6-v2") 7 return model.encode(text).tolist() 8 9# Fan out across 250K rows10embeddings = list(embed.map(corpus, retries=3))Designed for production.
Map at any cardinality
Run 1,000,000 invocations as easily as 10. Scheduler scales workers to match.
Retries + DLQ
Per-task retry policies with exponential backoff. Failed items land in a dead-letter queue.
Iterators + collectors
Stream inputs from S3 / R2 / DFS; collect outputs to parquet without intermediate disks.
Concurrency caps
Throttle per third-party API or dataset shard to avoid hitting upstream rate limits.
Chain into pipelines
Compose batches into DAGs with first-class fan-in/fan-out and conditional branches.
Idempotent by default
Deterministic task IDs make re-runs safe — only failed shards recompute.
Metered. No markup.
Pay per active second / per GiB. Free tier covers small projects; $200/mo cap until you opt in. See the full calculator.
| Line item | Unit | Rate (USD) |
|---|---|---|
| Functions — CPU | per 1M requests | $0.23 |
| Functions — GPU L4 | per GPU-second | $0.000095 |
| Storage | per GiB-month | $0.026 |
| Egress | per GiB | $0.098 |
Ship your first deploy in minutes.
Free $30/month of compute. No card required.