Skip to main content

For scheduled work that produces no data asset.

Dagster models your data as assets with lineage, and does it well. When the output is a decision, a message or a deck, a Task is a program with typed inputs and a schedule.

qbr.py
deals = aisle.integrations.hubspot.list_deals(limit=100) summary = aisle.ai.run_prompt(slug="qbr-summary", variables={"deals": deals}) template = aisle.files.read(aisle.inputs.get("template"), encoding="bytes") deck = aisle.files.write( aisle.powerpoint.fill(template, summary), "qbr.pptx", content_type=PPTX, ) aisle.output(aisle.files.download_url(deck))

Model and provider agnostic.

  • Anthropic
  • OpenAI
  • Gemini
  • xAI
  • OpenRouter
  • Amazon
  • Perplexity
  • MoonshotAI
  • Meta
  • Qwen

Aisle vs Dagster

Different jobs, so read this as scoping. Dagster is a data platform organised around assets. A task runs a business process. The rows below decide which one you have.

FeatureAisleDagster
The jobA business process with AI stepsAsset-oriented data orchestration
Core abstractionA task: a script with typed inputsAn asset
LanguagePythonPython
What you operateNothing. It is managed.Self-host, or Dagster+
Deploying a changeSaving puts the revision liveBuild and ship a code location
Model callsaisle.ai.run_prompt, with structured outputBring your own SDK and keys
PromptsVersioned in a prompt platform, called by slugYou build it
Integration credentialsBrokered server-side, OAuth refresh handledResources you configure
Lineage and catalogueNot includedYes, and it is the core strength
Data quality checksNot includedAsset checks
Partitions and backfillsNot a first-class conceptYes
TestsA tests.py rides with the task, in the same revisionYour own suite in the repo
Local developmentEditor with the SDK in scope, draft runsStrong, with a full local loop
Run surface for non-developersTyped inputs render a formLaunchpad with run config
Self-hostingNot available. The runtime is proprietary.Yes, it is open source
The job
AisleA business process with AI steps
DagsterAsset-oriented data orchestration
Core abstraction
AisleA task: a script with typed inputs
DagsterAn asset
Language
AislePython
DagsterPython
What you operate
AisleNothing. It is managed.
DagsterSelf-host, or Dagster+
Deploying a change
AisleSaving puts the revision live
DagsterBuild and ship a code location
Model calls
Aisleaisle.ai.run_prompt, with structured output
DagsterBring your own SDK and keys
Prompts
AisleVersioned in a prompt platform, called by slug
DagsterYou build it
Integration credentials
AisleBrokered server-side, OAuth refresh handled
DagsterResources you configure
Lineage and catalogue
AisleNot included
DagsterYes, and it is the core strength
Data quality checks
AisleNot included
DagsterAsset checks
Partitions and backfills
AisleNot a first-class concept
DagsterYes
Tests
AisleA tests.py rides with the task, in the same revision
DagsterYour own suite in the repo
Local development
AisleEditor with the SDK in scope, draft runs
DagsterStrong, with a full local loop
Run surface for non-developers
AisleTyped inputs render a form
DagsterLaunchpad with run config
Self-hosting
AisleNot available. The runtime is proprietary.
DagsterYes, it is open source

Not everything scheduled is an asset.

A weekly summary or a triage routine modelled as an asset buys lineage and materialisation semantics for something that produces no table.

Typed inputs render a form

A developer builds it once, and anyone runs it from a form with their own parameters, without touching a launchpad or a config file. Results land in Slack, as an API response, or as a chat the team asks follow-up questions in.

qbr.py
quarter = aisle.inputs.get("quarter")
account = aisle.inputs.get("account")

Model calls are functions

A model-agnostic prompt platform. The model is a field on the prompt, and so is the output schema, which constrains the answer to JSON matching it, so the next step reads fields instead of parsing prose.

qbr.py
summary = aisle.ai.run_prompt(
    slug="qbr-summary",
    variables={"deals": deals},
)

Files and documents

Read, write, and convert doc, xlsx, and pptx. Split and recombine PDFs, fill a PowerPoint template, zip outputs, and get a presigned download URL back.

qbr.py
filled = aisle.powerpoint.fill(template, summary)
deck = aisle.files.write(filled, "qbr.pptx", content_type=PPTX)
url = aisle.files.download_url(deck)

What moves, and what should not.

Keep Dagster for the asset graph. Move the jobs that were never assets.

  1. Move scheduled jobs that call APIs, summarise, classify or draft, and produce no table.
  2. Keep anything with real lineage, partitions, backfills or asset checks.
  3. A task exposes a webhook with a synchronous response, so an asset can call it and use the result.
  4. That keeps materialisation and lineage in Dagster while the AI step runs where the prompts and credentials are.

Where Dagster is the right tool.

Dagster is a strong data platform and none of the above competes with that.

  • Your work produces data assets with dependencies between them.
  • You need lineage, a catalogue, asset checks or partitioned backfills.
  • You need to self-host.
  • You want a full local development loop with the orchestrator on your machine.

Questions

Is Aisle a replacement for Dagster?

Not for data orchestration. There is no asset lineage, no partitions and no asset checks. It replaces Dagster only where a job was modelled as an asset because Dagster was already in the building, while what it actually does is call APIs and models on a schedule.

Can Dagster call an Aisle task?

Yes. A task can be triggered by webhook and return its result synchronously, so an asset calls it and uses the output. Lineage and materialisation stay in Dagster.

How does testing work compared to Dagster?

A tests.py rides with the task, versioned in the same revision as the code, so a diff shows whether the tests moved with the change. Tests run in a sandbox where any unmocked integration or model call raises, so a test cannot post to a real channel or bill a real model call.

Which fits an AI pipeline better?

If the pipeline produces data assets that other assets depend on, Dagster. If it produces a decision, a message, a document or a summary someone reads, a task fits better, because the prompts, credentials, structured output and the team-facing result surface are already there.

Competitor details reviewed . Vendors change plans and features without notice, so check theirs before deciding.

Keep the asset graph. Move the AI part.

A managed Python runtime with versioned prompts, structured model output and nothing to operate.