Swiftide

A Rust framework for streaming LLM applications: an agent harness, typed task graphs, and composable indexing/query RAG pipelines in one toolkit.

Stars
★ 795
Last updated
7d ago
License
MIT
Primary language
Rust

At a glance

How it runs
Library / SDKFramework
Works with
Universal · cross-platformOpenAI API · Claude API
Cost
Free software; you pay for model usage
Setup effort
Medium · a few setup steps
You'll need
Rust toolchain (Cargo)Tokio runtimeShell / CLINetwork accessLocal filesystemMCP Server
Typical use
Rust developers building retrieval-augmented Q&A over their codebases, loading .rs files with FileLoader, chunking with tree-sitter, embedding, and storing in Qdrant
Not a fit if
  • Teams needing stable APIs: pre-1.0, interfaces may change
  • Teams without async Rust experience (Tokio, Arc, trait objects)
  • Users wanting turnkey setup without wiring model and storage services
Source review
68/100 · Some gaps

What does this agent do, and when should you use it?

Swiftide is a Rust framework from the bosun-ai organization for building LLM applications, built on three pillars: an agent harness, typed task graphs, and streaming RAG indexing/query pipelines. The agent harness owns message history, calls an LLM, invokes tools, runs lifecycle hooks, and stops on configured conditions; task graphs orchestrate strongly typed nodes and transitions supporting parallel fan-out, pause, and resume; RAG pipelines stream data through loaders, transformers, embedders, caches, and storage backends. It integrates with many LLM providers including OpenAI, Anthropic, Gemini, and Ollama, plus storage like Qdrant, Redis, LanceDB, and PgVector, with MCP tool loading and Langfuse observability. The project is pre-1.0 with APIs that may change, and is distributed under the MIT license.

Swiftide delivers three capability lines. First, the agent harness: build agents via agents::Agent::builder(), register Rust functions as tools with the #[swiftide::tool] macro, and use AgentContext to abstract message history and a ToolExecutor (local by default, with a Docker executor option). It supports lifecycle hooks, human-in-the-loop approval via ApprovalRequired, structured stop/failure payloads, MCP toolboxes, and streaming responses. Second, task graphs: Task and TaskNode compose compile-time typed workflows where Transition decides output routing, with static fan-out/join, sequential or parallel execution, and pause/resume. Third, RAG pipelines: indexing::Pipeline chains FileLoader, ChunkCode (tree-sitter-based code chunking), MetadataQACode, Embed, and stores like Qdrant for indexing; query pipelines support query transformation, retrieval, hybrid search, reranking, and evaluation.

  1. Rust developers building retrieval-augmented Q&A over their codebases, loading .rs files with FileLoader, chunking with tree-sitter, embedding, and storing in Qdrant
  2. Teams building semi-autonomous agents that call local tools and include human approval steps, such as code review or ops assistants
  3. Platform teams orchestrating prompts, agents, and domain logic into strongly typed multi-node workflows that pause and resume for external callbacks
  4. AI product backends that need multiple LLM providers (OpenAI, Anthropic, Bedrock, Ollama) without vendor lock-in
  5. Data teams streaming large indexing workloads from Kafka, Fluvio, or Parquet sources with Langfuse tracing

How do you install or deploy this agent?

Install via Cargo with needed features:
sh

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

For OpenAI, set the API key:
sh
export OPENAI_API_KEY=...

Integrations are feature-gated so builds stay light.

How do you use this agent?

Minimal agent: build an LLM client with swiftide::integrations::openai::OpenAI::builder().default_prompt_model("gpt-4o-mini").build()?; define async tool functions with #[swiftide::tool]; construct the agent with agents::Agent::builder().llm(&openai).tools([...]).on_new_message(...).limit(8).build()?, then call .query("...").await?. For RAG indexing, use indexing::Pipeline::from_loader(FileLoader::new(".")) chained with then_chunk, then, then_in_batch(Embed::new(...)), then_store_with(qdrant), and .run().await?. The examples directory includes hello_agents, tasks, tasks_fanout, hybrid_search, langfuse, and more runnable examples.

What are this agent's strengths and limitations?

Pros
  • One framework covers agent loops, typed task orchestration, and streaming RAG pipelines, avoiding gluing multiple libraries
  • Multi-provider adapters (OpenAI, Anthropic, Gemini, Bedrock, Groq, Ollama, etc.) with feature gating keeping dependencies light
  • Task graphs are strongly typed at build time — node input/output/error types are checked when composing, reducing runtime orchestration errors
  • Native Rust implementation suited to performance-sensitive indexing and retrieval paths; the README explicitly flags attention to allocations on hot paths
  • Open tool ecosystem: local Rust functions, custom Tool implementations, MCP servers, and a Docker executor all plug in
Limitations
  • Pre-1.0 status: the README explicitly warns APIs can change, so upgrades carry migration risk
  • Requires familiarity with async Rust (Tokio, Arc, trait objects) — a high bar for non-Rust teams
  • Storage, data-source, and observability features depend on external systems (Qdrant, Redis, Kafka, Langfuse), increasing deployment complexity
  • Documentation leans on API docs and examples; the README admits examples are the most reliable source of exact signatures, so formal docs may lag

How does this agent compare with similar options?

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
Swiftide This agent 68 · Some gaps Library / SDKFree + model costs ★ 795 7d ago Rust OpenAI API · Claude API
Codewhale Terminal Coding Agent 75 · Some gaps CLIFree + model costs ★ 41k today Rust OpenAI API · Claude API
RAGLight 63 · Some gaps CLIFree + model costs ★ 673 8d ago Python OpenAI API
AppWorld Agent Benchmark Environment 56 · Major gaps CLIFree + model costs ★ 539 1mo ago Python OpenAI API · Claude API

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Some gaps
68/ 100 5-point scale 3.4 / 5
This review covers the source as of Sep 10, 2026. The project has shipped 1 stable release(s) since, which have not been re-reviewed. The score and verdict describe the reviewed version only. Recent releases ↓
Trust 17/29
Reliability 9/14
Adaptability 14/18
Convention 14/18
Effectiveness 9/13
Verifiability 5/8
Why each dimension lost points
Trust17 / 29 · 2.9/5

Evidence shows a local-default tool executor, an optional docker executor for isolation, human-in-the-loop approval via ApprovalRequired, and a customizable stop tool, giving basic constraints on privilege and external effects (2 each); but no fine-grained permission declaration, no documented secret/data redaction guidance, and no rollback mechanism, so no full marks.

Reliability9 / 14 · 3.2/5

Typed task graphs, stop conditions, structured failure payloads, and tracing/metrics support self-consistency and error reporting; pinned workspace dependency versions plus CI test and coverage badges support dependency availability; static review cannot verify runtime behavior, hence deductions.

Adaptability14 / 18 · 3.9/5

README targets a clear audience (Rust developers building agents/RAG) with well-partitioned scenarios and examples, and states boundaries (pre-1.0, unstable APIs); however tool/stop semantics (trigger precision) are only described at a high level, and multi-provider environment fit is feature-gated description only.

Convention14 / 18 · 3.9/5

Information architecture, install instructions, examples index, and MIT license (LICENSE matches Cargo.toml) are thorough — full marks; maintainers (core team, contributing guide, Discord) are identified; but no CHANGELOG file exists, version history relies on a crates.io badge, and known limitations get one sentence under Project Status.

Effectiveness9 / 13 · 3.5/5

Examples demonstrate composability, streaming output, and observability, supporting output usability; feature gating keeps dependency weight low, giving reasonable cost/benefit; actual utility requires execution, so only moderate scores are justified.

Verifiability5 / 8 · 3.1/5

Most capability claims map to named example files and docs.rs links, giving moderate traceability; CI/coverage badges corroborate Cargo.toml and LICENSE; but static material cannot verify badge reality, and some claimed capabilities (resume, MCP toolboxes) are asserted without source detail in the provided files.

Risks and how to mitigate them
  • Project is pre-1.0; APIs may change without notice — pin versions for production use.
  • Agents execute tools/commands locally by default; configure isolation (e.g., the docker executor) and human approval before wiring an LLM.
  • API keys are injected via environment variables (OPENAI_API_KEY); no documented redaction or log-leak protections — audit yourself.
  • No CHANGELOG; review diffs before upgrading dependency versions.
  • Publisher identity is unverified in the enterprise registry; establish trust independently.
Evidence confidence: Low Reviewed Sep 10, 2026 Reviewed revision 3736ce790b1d New commits since this review; the score may not cover them
See the full review method →

Recent releases

Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.

  1. v0.33.0 swiftide-v0.33.0
    Release notes excerpt
    New features - [a94760d](https://github.com/bosun-ai/swiftide/commit/a94760d9cbaed552bf58bc667cc7a67141751fe6) *(indexing)* Convenience then_expand alias for then_chunk - [13d36c0](https://github.com/bosun-ai/swiftide/commit/13d36c0fc922752b322a4d95b82a847b3d2ad84f) *(agents)* Stream output while commands run ([#1162](https://github.com/bosun-ai/swiftide/pull/1162)) - [7ff5a43](https://github.com/bosun-ai/swiftide/commit/7ff5a43c61b3d2298970f9ca11c3a05d876e1148) *(agents)* Allow fully overwriting agent history via context ([#997](https://github.com/bosun-ai/swiftide/pull/997)) …
    View on GitHub ↗
  2. v0.32.1 swiftide-v0.32.1
    Release notes excerpt
    New features - [8bca0ef](https://github.com/bosun-ai/swiftide/commit/8bca0efa246e6adac061006f5f72cc9dd038cc8f) *(integrations/tree-sitter)* Add C# support ([#967](https://github.com/bosun-ai/swiftide/pull/967)) - [da35870](https://github.com/bosun-ai/swiftide/commit/da358708c83459c7f990027759fa5c56a2b647b9) Custom schema for fail tool ([#966](https://github.com/bosun-ai/swiftide/pull/966)) Full Changelog: https://github.com/bosun-ai/swiftide/compare/0.32.0...0.32.1
    View on GitHub ↗
  3. v0.32.0 swiftide-v0.32.0
    Release notes excerpt
    New features - [9ae3331](https://github.com/bosun-ai/swiftide/commit/9ae33317bbcbf5e65e3aa7eb0bf378190b7c33b5) *(agents)* [breaking] Improve toolspec api with schemars and support all possible types ([#940](https://github.com/bosun-ai/swiftide/pull/940)) BREAKING CHANGE: macro-level json_type overrides beyond the basic primitives are no longer enforced; rely on Rust type inference or provide an explicit schemars-derived struct/custom schema when specific shapes are required …
    View on GitHub ↗
View on GitHub ↗ Install ↓

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents