Skip to main content

Less catching up.
More building.

Celeste brings text, images, audio, video, and embeddings into one open-source Python SDK. Choose the models that work for you, and keep your options open as you build.

Meet the SDK

Change the model.
Keep the interface.

Choose a provider below and watch the highlighted model change. Your Python call keeps the same shape.

Choose a capability
Switch provider
Generate
import celeste
response = await celeste.text.generate(
model="claude-haiku-4-5",
prompt="Write a project brief for a neighborhood repair café." )
print(response.content)

Model support and optional parameters vary. Explore the catalogue to compare capabilities before switching.

Add your provider credentials to run the examples. Provider terms and charges apply.

Different strengths.
Your choice of models.

Explore 14 providers
One idea. More possibilities.
AI-generated circular observatory on a volcanic coast at dawnCreative study · AI-generated image

images.generate

It starts with a few words.

Describe the scene. Choose an image model. Make something that didn’t exist a moment ago.

THE PROMPT

A circular observatory on a volcanic coast at dawn. Quiet architectural photography.

Explore the model

images.generate

SDK integration example · Artwork created with the image-generation tool
from pathlib import Path
import celeste

response = await celeste.images.generate(
    model="gpt-image-1.5",
    prompt="A circular observatory on a volcanic coast at dawn.",
    aspect_ratio="1536x1024",
)

Path("observatory-day.png").write_bytes(response.content.get_bytes())

Run in an async function or notebook with your provider credentials. Files are saved in your working directory.

Set up Celeste

Embeddings / Search & retrieval

Make knowledge
easier to find.

A question and a document can describe the same thing with different words. Embeddings give your search a way to connect them.

Try a sample search
Explore embedding models
From the observatory guideSimilarity
  1. 01
    Observing

    Under a darker sky

    The observatory opens its courtyard after sunset. Visitors can identify constellations and watch meteor showers far from city lights.

    0.751
  2. 02
    Landscape

    A path along the water

    A walking trail follows the black basalt shoreline. Quiet viewpoints overlook the ocean, the surf, and distant coastal cliffs.

    0.618
  3. 03
    Visiting

    Arriving at the observatory

    The visitor entrance is step-free. Bicycle parking and a small shuttle stop sit beside the main access road.

    0.578

Top match: Under a darker sky

Create an embedding in Python
import celeste

response = await celeste.text.embed(
    model="gemini-embedding-001",
    text="A place to watch the stars",
)

vector = response.content

Real vectors generated with Celeste and Gemini Embedding 001. Fictional guide, saved queries, cosine similarity. Inspect the vectors ↗

Celeste creates the vectors. You choose how to store them, rank results, and build retrieval into your application.

An open foundation

Your project stays yours.

Celeste runs in your Python application. You choose how the parts fit together and which providers they connect to.

Fits your architecture.

Compose typed building blocks in your own application or workflow. Celeste handles the model interface; you decide what happens around it.

Read the docs

Connects to your providers.

Use your own provider credentials. The SDK sends requests from your application to the providers you configure.

Set up a provider

Open to inspect and change.

Public source, an MIT license, and a documented contribution path. Read how it works and help improve it.

Read the MIT license

Public beta. Celeste is actively evolving. Follow development on GitHub.

Start building with Celeste.

Install Celeste, add a provider key, and make your first call.

uv add celeste-ai
Get started