diff --git a/packages/core/src/family.ts b/packages/core/src/family.ts
index 062d109ae6..27ca0be707 100644
--- a/packages/core/src/family.ts
+++ b/packages/core/src/family.ts
@@ -438,6 +438,9 @@ export const ModelFamilyValues = [
// Elephant
"elephant",
+
+ // Celeris Labs
+ "celeris",
] as const;
export const ModelFamily = z.enum(ModelFamilyValues);
diff --git a/providers/celeris/logo.svg b/providers/celeris/logo.svg
new file mode 100644
index 0000000000..e1f2151923
--- /dev/null
+++ b/providers/celeris/logo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/providers/celeris/models/celeris-1.toml b/providers/celeris/models/celeris-1.toml
new file mode 100644
index 0000000000..55f9f461a9
--- /dev/null
+++ b/providers/celeris/models/celeris-1.toml
@@ -0,0 +1,32 @@
+name = "Celeris 1"
+description = "General-purpose diffusion language model that generates tokens in parallel blocks rather than one at a time, for substantially lower latency"
+family = "celeris"
+release_date = "2026-07-23"
+last_updated = "2026-07-23"
+attachment = false
+reasoning = false
+temperature = true
+tool_call = true
+# The API does not implement `response_format`, so JSON mode and JSON-schema
+# output are unavailable; structured output must go through tool calling.
+structured_output = false
+open_weights = false
+
+[cost]
+# Pay-as-you-go rates, USD per million tokens, from the vendor's pricing page
+# (accessed 2026-07-26): https://celeris.ai/pricing.html
+# "$2 / M input tokens", "$6 / M output tokens". Input and output are metered
+# separately; no cache pricing is published.
+input = 2.0
+output = 6.0
+
+[limit]
+context = 8_192
+# Shared budget: prompt + completion must together stay under `context`. Declared
+# as a 256-aligned value below `context` so that consumers which forward this
+# field as `max_tokens` send a value the API accepts.
+output = 4_096
+
+[modalities]
+input = ["text"]
+output = ["text"]
diff --git a/providers/celeris/provider.toml b/providers/celeris/provider.toml
new file mode 100644
index 0000000000..04fd9f8228
--- /dev/null
+++ b/providers/celeris/provider.toml
@@ -0,0 +1,11 @@
+name = "Celeris"
+env = ["CELERIS_API_KEY"]
+npm = "@ai-sdk/openai-compatible"
+# Celeris namespaces the base URL per model: https://inference.celeris.ai//v1
+# `celeris-1` is the only served model today, so the base URL is pinned to it.
+# API exception (accessed 2026-07-26): POST /chat/completions requires `max_tokens`
+# to be 1 (warm ping) or a positive multiple of 256; any other value returns 400.
+# Prompt + max_tokens must also stay within the 8,192-token window.
+# https://docs.celeris.ai/api-reference
+api = "https://inference.celeris.ai/celeris-1/v1/"
+doc = "https://docs.celeris.ai"