Blog
Dagster Pipes: Now available for TypeScript, Rust, and Java

Dagster Pipes: Now available for TypeScript, Rust, and Java

May 12, 2025
Dagster Pipes: Now available for TypeScript, Rust, and Java
Dagster Pipes: Now available for TypeScript, Rust, and Java

Expanding Dagster pipes to support Typescript, Rust, and Java

Why Expanding Dagster Pipes Matters

At Dagster, we understand that data teams work with diverse technology stacks. Its why we built Pipes, a standardized interface to launch code in external environments with minimal additional dependencies. Pipes maintains full visibility through parameter passing, streaming logs, and structured metadata making it particularly powerful for incremental adoption.

With the help of our community we’ve expanded our pipes availability to includeTypeScript, Rust, and Java. With these new implementations, you can now:

  • Leverage Dagster Pipes in more ecosystems: If your team is working with TypeScript on a Node.js backed, Rust for high-performance data processing, or Java for enterprise-scale applications, you can now integrate seamlessly with Dagster.
  • Standardize orchestration across your stack: No need to rewrite logic in Python—just use the language that makes the most sense for your project.

What’s New: Pipes for TypeScript, Rust, and Java

TypeScript

Dagster Pipes for TypeScript brings orchestration capabilities to TypeScript. Now, backend teams working in the Node.js ecosystem can integrate their processes into Dagster with ease.

Rust

Dagster Pipes for Rust is perfect for teams that require high-performance, memory-efficient data processing. With Rust’s growing presence in the data ecosystem, this implementation ensures safe, concurrent, and lightning-fast pipeline execution.

  • Great for data-intensive workloads where performance is key.
  • Provides Rust’s strong memory safety guarantees.
  • Ideal for processing large-scale analytics workloads.

Java

Dagster Pipes for Java brings orchestration to one of the most widely used enterprise languages. Java-based data platforms, machine learning pipelines, and legacy applications can now seamlessly integrate with Dagster’s orchestration framework.

  • Essential for teams working in enterprise environments.
  • Ensures compatibility with JVM-based data ecosystems.
  • Supports large-scale, mission-critical workflows.

Typescript example:

In your Typescript project, import @dagster-io/dagster-pipes from npm and then you can pipe information back to your Dagster context.

// main.ts

import OpenAI from 'jsr:@openai/openai';
import * as dagster_pipes from '@dagster-io/dagster-pipes';

using context = dagster_pipes.openDagsterPipes()
const client = new OpenAI();

const response = await client.responses.create({
  model: 'gpt-4o',
  instructions: 'You are a coding assistant that talks like a pirate',
  input: 'Are semicolons optional in JavaScript?',
});

// [optional] return structured logs to Dagster
context.logger.info(response.output_text);

// [optional] send metadata to Dagster and report an asset materialization
context.reportAssetMaterialization(
    {
        "openai_model": response.model
    }
)

On the Dagster side, you simply have your asset return the PipesSubprocess Client.

import subprocess
from pathlib import Path
import dagster as dg

@dg.asset(
)
def example_typescript_asset(
    context: dg.AssetExecutionContext,
    pipes_subprocess_client: dg.PipesSubprocessClient
) -> dg.MaterializeResult:
    external_script_path = dg.file_relative_path(__file__, "../main.js")

    return pipes_subprocess_client.run(
        command=["node", Path(external_script_path)],
        context=context,
    ).get_materialize_result()


defs = dg.Definitions(
    assets=[example_typescript_asset],
    resources={
        "pipes_subprocess_client": dg.PipesSubprocessClient()
    },
)

And you’ll get an output like this :

Getting Started

Ready to integrate Dagster Pipes into your TypeScript, Rust, or Java projects? Check out the documentation for each implementation and start orchestrating today:

Let us know how you’re using these new implementations by joining the Dagster community, and if there’s a pipes implementation you’d like to see let us know on Github or Slack. We’d love to collaborate with you.

Slack, Github

Have feedback or questions? Start a discussion in Slack or Github.

Interested in working with us? View our open roles.

Want more content like this? Follow us on LinkedIn.

Dagster Newsletter

Get updates delivered to your inbox

Latest writings

The latest news, technologies, and resources from our team.

Your GTM Data, Finally Untangled
Your GTM Data, Finally Untangled

January 15, 2026

Your GTM Data, Finally Untangled

Compass now connects directly to your go-to-market tools, letting you ask questions about pipeline, ad spend, and sales conversations in Slack without exporting CSVs or waiting on the data team.

Dignified Python: 10 Rules to Improve your LLM Agents
Dignified Python: 10 Rules to Improve your LLM Agents

January 9, 2026

Dignified Python: 10 Rules to Improve your LLM Agents

Modern LLMs generate patterns, not principles. Dignified Python gives agents the intent they lack, ensuring code is explicit, consistent, and engineered with care. Here are ten rules from our Claude prompt.

Evaluating Model Behavior Through Chess
Evaluating Model Behavior Through Chess

January 7, 2026

Evaluating Model Behavior Through Chess

Benchmarks measure outcomes, not behavior. By letting AI models play chess in repeatable tournaments, we can observe how they handle risk, repetition, and long-term objectives, revealing patterns that static evals hide.