StackMap
Subscribe
Explore / swiftide
bosun-ai

swiftide

Rust framework for LLM apps: an agent harness, compile-time-typed task graphs, and streaming RAG pipelines — MCP toolboxes, human-in-the-loop approval, tracing with Langfuse support.

748 65 Rust MITupdated today
Curator's take

The Rust-native full stack — harness, task graphs, streaming indexing — for teams who want LLM logic inside a Rust codebase instead of bolting on a Python sidecar. Typed task graphs are the real differentiator: hand-offs and fan-out/join results checked at compile time, a correctness class Python graph frameworks structurally can't offer. Read ★748 correctly — it measures the size of Rust's LLM niche, not quality; the project is mature, actively maintained and properly documented. When NOT: if your retrieval stack leans on the long tail of Python-ecosystem loaders, rerankers and eval tooling, Rust's integration surface is thinner and you will write the glue yourself.

Mapped by ShipWithAI editors · links verified
README.md

CI Coverage Status [![Crate Badge]][Crate] [![Docs Badge]][API Docs] [![Contributors][contributors-shield]][contributors-url] [![Stargazers][stars-shield]][stars-url] Discord [![MIT License][license-shield]][license-url] [![LinkedIn][linkedin-shield]][linkedin-url]


Swiftide logo

Swiftide

Composable LLM agents and harness, typed task graphs, and streaming RAG pipelines in Rust.
API docs · Examples · Website · Discord

Swiftide is an opinionated framework for building LLM applications. It gives you an agent harness, typed task graphs for orchestration, and streaming, composable indexing/query pipelines for RAG.

Swiftide composition overview
Table of Contents

Why Swiftide

  • Build agents that loop over LLM calls, tool calls, lifecycle hooks, and stop conditions.
  • Compose prompt steps, agents, command executors, and domain-specific Rust code in typed task graphs.
  • Fan out work into parallel branches and join typed results back into one task output.
  • Pause and resume agents or tasks for human approval, external callbacks, or persisted state.
  • Bring tools from local Rust functions, custom Tool implementations, or MCP servers.
  • Stream large indexing and retrieval workloads through loaders, transformers, embedders, caches, and storage backends.
  • Trace agent, task, and pipeline execution with tracing, metrics, and Langfuse support.

The core primitives provide the shared interaction model. Around them, use pipelines for data flows, agents for tool loops, and tasks for graphs of typed hand-offs.

Quick Start

Swiftide keeps default dependencies light. Start with the agent harness and add the integrations your application needs.

cargo add swiftide --features swiftide-agents,openai
cargo add anyhow
cargo add tokio --features macros,rt-multi-thread

If using OpenAI, set the API key expected by the OpenAI-compatible integration:

export OPENAI_API_KEY=...

Agent Harness

Swiftide provides a harnass for building (semi) autonomous agents. The harnass owns message history, call an LLM, invoke tools, run hooks, and stopping. Tools are pure functions and easy to add. The AgentContext abstracts over message history (in memory by default) and provides tools access to the outside world via a ToolExecutor (local by default, see also the docker executor).

use anyhow::Result;
use swiftide::{
    agents,
    chat_completion::{ToolOutput, errors::ToolError},
    traits::AgentContext,
};

#[swiftide::tool(
    description = "Looks up a Swiftide concept",
    

Continue your stack

What teams reach for next — and why each earns a place beside swiftide. Ranked by curator confidence.