Table of Contents
Fast, streaming indexing, query, and agentic LLM applications in Rust
Read more on swiftide.rs ยป
API Docs
ยท
Report Bug
ยท
Request Feature
ยท
Discord
Fast, streaming indexing, query, and agentic LLM applications in Rust
Fast, streaming indexing, query, and agentic LLM applications in Rust
Fast, streaming indexing, query, and agentic LLM applications in Rust
Read more on swiftide.rs ยป
API Docs
ยท
Report Bug
ยท
Request Feature
ยท
Discord
Swiftide is a Rust library for building LLM applications. From performing a simple prompt completion, to building fast, streaming indexing and querying pipelines, to building agents that can use tools and call other agents.
Part of the bosun.ai project. An upcoming platform for autonomous code improvement.
We <3 feedback: project ideas, suggestions, and complaints are very welcome. Feel free to open an issue or contact us on discord.
Caution
Swiftide is under heavy development and can have breaking changes. Documentation might fall short of all features, and despite our efforts be slightly outdated. We recommend to always keep an eye on our github and api documentation. If you found an issue or have any kind of feedback we'd love to hear from you.
More on our blog
Indexing a local code project, chunking into smaller pieces, enriching the nodes with metadata, and persisting into Qdrant:
indexing::Pipeline::from_loader(FileLoader::new(".").with_extensions(&["rs"]))
.with_default_llm_client(openai_client.clone())
.filter_cached(Redis::try_from_url(
redis_url,
"swiftide-examples",
)?)
.then_chunk(ChunkCode::try_for_language_and_chunk_size(
"rust",
10..2048,
)?)
.then(MetadataQACode::default())
.then(move |node| my_own_thing(node))
.then_in_batch(Embed::new(openai_client.clone()))
.then_store_with(
Qdrant::builder()
.batch_size(50)
.vector_size(1536)
.build()?,
)
.run()
.await?;Querying for an example on how to use the query pipeline:
query::Pipeline::default()
.then_transform_query(GenerateSubquestions::from_client(
openai_client.clone(),
))
.then_transform_query(Embed::from_client(
openai_client.clone(),
))
.then_retrieve(qdrant.clone())
.then_answer(Simple::from_client(openai_client.clone()))
.query("How can I use the query pipeline in Swiftide?")
.await?;Running an agent that can search code:
#[swiftide::tool(
description = "Searches code",
param(name = "code_query", description = "The code query")
)]
async fn search_code(
context: &dyn AgentContext,
code_query: &str,
) -> Result<ToolOutput, ToolError> {
let command_output = context
.executor()
.exec_cmd(&Command::shell(format!("rg '{code_query}'")))
.await?;
Ok(command_output.into())
}
agents::Agent::builder()
.llm(&openai)
.tools(vec![search_code()])
.build()?
.query("In what file can I find an example of a swiftide agent?")
.await?;Agents loop over LLM calls, tool calls, and lifecycle hooks until a final answer is reached.
You can find more detailed examples in /examples
Our goal is to create a fast, extendable platform for building LLM applications in Rust, to further the development of automated AI applications, with an easy-to-use and easy-to-extend api.
tracing supported for logging and tracing, see /examples and the tracing crate for more information.| Feature | Details |
|---|---|
| Supported Large Language Model providers | OpenAI (and Azure) Anthropic Gemini OpenRouter AWS Bedrock (Converse API) Groq - All models Ollama - All models |
| Agents | All the boiler plate for autonomous agents so you don't have to |
| Tasks | Build graph like workflows with tasks, combining all the above to build complex applications |
| Loading data | Files Scraping Fluvio Parquet Kafka Other pipelines and streams |
| Example and pre-build transformers and metadata generation | Generate Question and answerers for both text and code (Hyde) Summaries, titles and queries via an LLM Extract definitions and references with tree-sitter |
| Splitting and chunking | Markdown Text (text_splitter) Code (with tree-sitter) |
| Storage | Qdrant Redis LanceDB Postgres Duckdb |
| Query pipeline | Similarity and hybrid search, query and response transformations, and evaluation |
Make sure you have the rust toolchain installed. rustup Is the recommended approach.
To use OpenAI, an API key is required. Note that by default async_openai uses the OPENAI_API_KEY environment variables.
Other integrations might have their own requirements.
Set up a new Rust project
Add swiftide
cargo add swiftideEnable the features of integrations you would like to use in your Cargo.toml
Write a pipeline (see our examples and documentation)
Before building your streams, you need to enable and configure any integrations required. See /examples.
We have a lot of examples, please refer to /examples and the Documentation
Note
No integrations are enabled by default as some are code heavy. We recommend you to cherry-pick the integrations you need. By convention flags have the same name as the integration they represent.
An indexing stream starts with a Loader that emits Nodes. For instance, with the Fileloader each file is a Node.
You can then slice and dice, augment, and filter nodes. Each different kind of step in the pipeline requires different traits. This enables extension.
Nodes are generic over their inner type. This is a transition in progress, but when you BYO, feel free to slice and dice. The inner type can change midway through the pipeline.
(impl Loader) starting point of the stream, creates and emits Nodes(impl NodeCache) filters cached nodes(impl Transformer) transforms the node and puts it on the stream(impl BatchTransformer) transforms multiple nodes and puts them on the stream(impl ChunkerTransformer) transforms a single node and emits multiple nodes(impl Storage) stores the nodes in a storage backend, this can be chainedAdditionally, several generic transformers are implemented. They take implementers of SimplePrompt and EmbedModel to do their things.
Warning
Due to the performance, chunking before adding metadata gives rate limit errors on OpenAI very fast, especially with faster models like gpt-5-nano. Be aware. The async-openai crate provides an exmponential backoff strategy. If that is still a problem, there is also a decorator that supports streaming in swiftide_core/indexing_decorators.
A query stream starts with a search strategy. In the query pipeline a Query goes through several stages. Transformers and retrievers work together to get the right context into a prompt, before generating an answer. Transformers and Retrievers operate on different stages of the Query via a generic statemachine. Additionally, the search strategy is generic over the pipeline and Retrievers need to implement specifically for each strategy.
That sounds like a lot but, tl&dr; the query pipeline is fully and strongly typed.
Additionally, query pipelines can also be evaluated. I.e. by Ragas.
Similar to the indexing pipeline each step is governed by simple Traits and closures implement these traits as well.
Swiftide is in a very early stage and we are aware that we lack features for the wider community. Contributions are very welcome. ๐
If you have a great idea, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
Indexing and querying are performance sensitive tasks. Please make sure to consider allocations and performance when contributing.
AI Generated code is welcome and not frowned upon. Please be genuine and think critically about what you add.
If you just want to contribute (bless you!), see our issues or join us on Discord.
git checkout -b feature/AmazingFeature)git commit -m 'feat: Add some AmazingFeature')git push origin feature/AmazingFeature)AI Agents can refer to AGENTS.md for workspace layout, commands, and expectations tailored to agents.
|
timonv open for swiftide consulting |
tinco |
Distributed under the MIT License. See LICENSE for more information.
| Version | Changes | Urgency | Date |
|---|---|---|---|
| v0.32.1 | ### 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 | Low | 11/15/2025 |
| v0.32.0 | ### 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 - [ | Low | 11/6/2025 |
| v0.31.3 | ### New features - [a189ae6](https://github.com/bosun-ai/swiftide/commit/a189ae6de51571810f98cf58f9fdb58e7707f29a) *(integrations/openai)* Opt-in responses api ([#943](https://github.com/bosun-ai/swiftide/pull/943)) **Full Changelog**: https://github.com/bosun-ai/swiftide/compare/0.31.2...0.31.3 | Low | 10/6/2025 |
| v0.31.2 | ### New features - [f35c9b5](https://github.com/bosun-ai/swiftide/commit/f35c9b507e11f76ff7e78de35843b3310a25f3db) *(agents)* Add builder lite methods to SystemPrompt - [9f533f5](https://github.com/bosun-ai/swiftide/commit/9f533f57b2c7ed4ac1988f9e3567cda42f64b824) *(agents)* Add helpers to retrieve or mutate the system prompt - [febb7eb](https://github.com/bosun-ai/swiftide/commit/febb7eb282af98ce1124636cb66a8819265e3585) *(agents)* Support appending any kind of string to default SystemPro | Low | 9/24/2025 |
| v0.31.1 | ### Docs - [866b77a](https://github.com/bosun-ai/swiftide/commit/866b77a8c33b6b7935f260c1df099d89492cb048) *(readme)* Use raw links for images so they work on crates/docs - [513c143](https://github.com/bosun-ai/swiftide/commit/513c143cd11ae6ddda48f73012844f1f6d026ef7) *(readme)* Remove double back-to-top **Full Changelog**: https://github.com/bosun-ai/swiftide/compare/0.31.0...0.31.1 | Low | 9/16/2025 |
| v0.31.0 | ### New features - [ad6655d](https://github.com/bosun-ai/swiftide/commit/ad6655dc448defc3a9ef8401f0528da11e16a256) *(agents)* Add helper to remove default stop tool from agent builder - [708ebe4](https://github.com/bosun-ai/swiftide/commit/708ebe436b4d2e9456723cfc95557071f2c636c9) *(agents)* Implement From<SystemPrompt> for SystemPromptBuilder - [db79f21](https://github.com/bosun-ai/swiftide/commit/db79f21c323abca462a5f469814c4c03cc949b7e) *(agents/tasks)* Add helper to create instant tran | Low | 9/16/2025 |
| v0.30.1 | ### Bug fixes - [0114573](https://github.com/bosun-ai/swiftide/commit/011457367b7bfdc207f1f6d9ebfcbf2a2de4ac58) *(agents)* Explicitly handle out of bounds and empty edge cases for message history - [1005ac2](https://github.com/bosun-ai/swiftide/commit/1005ac219e2078c6ee12b050a7e73d48ef7f46a5) *(core)* Export tokenizer traits from the root crate - [e4c01e1](https://github.com/bosun-ai/swiftide/commit/e4c01e14fbe89cb5a16beddcb3819b66c7f1a087) *(integrations/tiktoken)* Tiktoken feature flag i | Low | 8/19/2025 |
| v0.30.0 | ### New features - [dc574b4](https://github.com/bosun-ai/swiftide/commit/dc574b41b259f430bb4dc38338416ea1aa9480bb) *(agents)* Multi agent setup with graph-like Tasks ([#861](https://github.com/bosun-ai/swiftide/pull/861)) - [8740762](https://github.com/bosun-ai/swiftide/commit/87407626ef75c254fae0a677148609738fd64ccc) *(agents)* Allow mutating an existing system prompt in the builder ([#887](https://github.com/bosun-ai/swiftide/pull/887)) - [4bbf207](https://github.com/bosun-ai/swiftide/com | Low | 8/16/2025 |
| v0.29.0 | ### New features - [25a86fa](https://github.com/bosun-ai/swiftide/commit/25a86fa0403581c3c5ddc5bd237bee98f41bc153) *(agents)* Lots of utility functions for agents ([#862](https://github.com/bosun-ai/swiftide/pull/862)) - [a70840b](https://github.com/bosun-ai/swiftide/commit/a70840b4dca983bd23b54f1f7cf12b33d60b733c) *(openai)* Add helper to set the end user field for requests - [f8ddeba](https://github.com/bosun-ai/swiftide/commit/f8ddebaf57001671516db193140c2e5618000206) *(tree-sitter)* Ad | Low | 7/29/2025 |
| v0.28.1 | ### New features - [c671e6a](https://github.com/bosun-ai/swiftide/commit/c671e6aec7b381235f8450a8be0cbc766df72985) *(agents)* Add is_approved() and is_refused() to ToolFeedback ### Bug fixes - [68c5cda](https://github.com/bosun-ai/swiftide/commit/68c5cdafc6e457739bcfeb12d2810350659f2979) *(agents)* Prevent stack overflow when ToolExecutor has ambigious refs - [07198d2](https://github.com/bosun-ai/swiftide/commit/07198d26389e1606e6e0f552e411196f42cf6600) *(duckdb)* Resolve 'x is an existin | Low | 7/1/2025 |
| v0.28.0 | ### New features - [9d11386](https://github.com/bosun-ai/swiftide/commit/9d11386c155773fcc77a60591cd57bc366044c71) Token usage metrics for embeddings, SimplePrompt and ChatCompletion with metric-rs ([#813](https://github.com/bosun-ai/swiftide/pull/813)) - [59c8b9c](https://github.com/bosun-ai/swiftide/commit/59c8b9cef721c3861a9d352c7fbef28e27d2f649) Stream files from tool executor for indexing ([#835](https://github.com/bosun-ai/swiftide/pull/835)) ### Bug fixes - [ba6ec04](https://github. | Low | 6/30/2025 |
| v0.27.2 | ### New features - [66cd7e9](https://github.com/bosun-ai/swiftide/commit/66cd7e9349673a77d8cc79e6b5acab8d56078a42) *(qdrant)* Add support for a filter in hybrid search ([#830](https://github.com/bosun-ai/swiftide/pull/830)) **Full Changelog**: https://github.com/bosun-ai/swiftide/compare/0.27.1...0.27.2 | Low | 6/29/2025 |
| v0.27.1 | ### Bug fixes - [0892151](https://github.com/bosun-ai/swiftide/commit/0892151d2d02c30e38fa8629c386eaf4475da7f8) *(duckdb)* Avoid panic if duckdb gets created twice ([#818](https://github.com/bosun-ai/swiftide/pull/818)) - [0815923](https://github.com/bosun-ai/swiftide/commit/081592334f2bd8c2da30535b4e1b51e8ddd15834) *(tool-executor)* Remove conflicting implementation of AsRef<str> for Output ### Miscellaneous - [2b64410](https://github.com/bosun-ai/swiftide/commit/2b644109796c8870d29fa1b54 | Low | 6/12/2025 |
| v0.27.0 | ### New features - [c636eba](https://github.com/bosun-ai/swiftide/commit/c636ebaa2eb8d4ace1b5a370698c5f2817fc9c99) *(agents)* [**breaking**] Context is now generic over its backend ([#810](https://github.com/bosun-ai/swiftide/pull/810)) **BREAKING CHANGE**: The signature is now slightly different for the AgentContext. If you have implemented your own for i.e. a persisted solution, if it's *just that*, the implementation is now a lot more straightforward with the `MessageHistory` trait. - [3c | Low | 6/11/2025 |
| v0.26.0 | ### New features - [11051d5](https://github.com/bosun-ai/swiftide/commit/11051d5a1df6ea158ee84de274767fbdc70cc74e) *(agents)* `tools` on `Agent` is now public and can be used in hooks - [ebe68c1](https://github.com/bosun-ai/swiftide/commit/ebe68c104b8198b80ee5ee1f451c3272ce36841c) *(integrations)* Streaming chat completions for anthropic ([#773](https://github.com/bosun-ai/swiftide/pull/773)) - [7f5b345](https://github.com/bosun-ai/swiftide/commit/7f5b345115a3443afc9b32ca54a292fae3f5d38b) * | Low | 5/6/2025 |
| v0.25.1 | ### Bug fixes - [7102091](https://github.com/bosun-ai/swiftide/commit/710209123ba6972cd11fb0f3d364c9c83478e184) *(agents)* AgentBuilder and AgentBuilderError should be public **Full Changelog**: https://github.com/bosun-ai/swiftide/compare/0.25.0...0.25.1 | Low | 4/17/2025 |
| v0.25.0 | ### New features - [4959ddf](https://github.com/bosun-ai/swiftide/commit/4959ddfe00e0424215dd9bd3e8a6acb579cc056c) *(agents)* Restore agents from an existing message history ([#742](https://github.com/bosun-ai/swiftide/pull/742)) - [6efd15b](https://github.com/bosun-ai/swiftide/commit/6efd15bf7b88d8f8656c4017676baf03a3bb510e) *(agents)* Agents now take an Into Prompt when queried ([#743](https://github.com/bosun-ai/swiftide/pull/743)) ### Bug fixes - [5db4de2](https://github.com/bo | Low | 4/16/2025 |
| v0.24.0 | ### New features - [3117fc6](https://github.com/bosun-ai/swiftide/commit/3117fc62c146b0bf0949adb3cfe4e6c7f40427f7) Introduce LanguageModelError for LLM traits and an optional backoff decorator ([#630](https://github.com/bosun-ai/swiftide/pull/630)) ### Bug fixes - [0134dae](https://github.com/bosun-ai/swiftide/commit/0134daebef5d47035e986d30e1fa8f2c751c2c48) *(agents)* Gracefully stop mcp service on drop ([#734](https://github.com/bosun-ai/swiftide/pull/734)) ### Miscellaneous - [e872c5b] | Low | 4/11/2025 |
| v0.23.0 | ### New features - [fca4165](https://github.com/bosun-ai/swiftide/commit/fca4165c5be4b14cdc3d20ed8215ef64c5fd69a9) *(agents)* Return typed errors and yield error in `on_stop` ([#725](https://github.com/bosun-ai/swiftide/pull/725)) - [29352e6](https://github.com/bosun-ai/swiftide/commit/29352e6d3dc51779f3202e0e9936bf72e0b61605) *(agents)* Add `on_stop` hook and `stop` now takes a `StopReason` ([#724](https://github.com/bosun-ai/swiftide/pull/724)) - [a85cd8e](https://github.com/bosun-ai/swif | Low | 4/8/2025 |
| v0.22.8 | ### Bug fixes - [6b4dfca](https://github.com/bosun-ai/swiftide/commit/6b4dfca822f39b3700d60e6ea31b9b48ccd6d56f) Tool macros should work with latest darling version ([#712](https://github.com/bosun-ai/swiftide/pull/712)) **Full Changelog**: https://github.com/bosun-ai/swiftide/compare/0.22.7...0.22.8 | Low | 4/2/2025 |
| v0.22.7 | ### Bug fixes - [b0001fb](https://github.com/bosun-ai/swiftide/commit/b0001fbb12cf6bb85fc4d5a8ef0968219e8c78db) *(duckdb)* Upsert is now opt in as it requires duckdb >= 1.2 ([#708](https://github.com/bosun-ai/swiftide/pull/708)) **Full Changelog**: https://github.com/bosun-ai/swiftide/compare/0.22.6...0.22.7 | Low | 3/30/2025 |
| v0.22.6 | ### New features - [a05b3c8](https://github.com/bosun-ai/swiftide/commit/a05b3c8e7c4224c060215c34490b2ea7729592bf) *(macros)* Support optional values and make them even nicer to use ([#703](https://github.com/bosun-ai/swiftide/pull/703)) ### Bug fixes - [1866d5a](https://github.com/bosun-ai/swiftide/commit/1866d5a081f40123e607208d04403fb98f34c057) *(integrations)* Loosen up duckdb requirements even more and make it more flexible for version requirements ([#706](https://github.com/bosun-ai/s | Low | 3/27/2025 |
| v0.22.5 | ### New features - [eb4e044](https://github.com/bosun-ai/swiftide/commit/eb4e0442293e17722743aa2b88d8dd7582dd9236) Estimate tokens for OpenAI like apis with tiktoken-rs ([#699](https://github.com/bosun-ai/swiftide/pull/699)) ### Miscellaneous - [345c57a](https://github.com/bosun-ai/swiftide/commit/345c57a663dd0d315a28f0927c5d598ba21d019d) Improve file loader logging ([#695](https://github.com/bosun-ai/swiftide/pull/695)) **Full Changelog**: https://github.com/bosun-ai/swiftide/comp | Low | 3/26/2025 |
| v0.22.4 | ### Bug fixes - [4ec00bb](https://github.com/bosun-ai/swiftide/commit/4ec00bb0fed214f27629f32569406bfa2c786dd7) *(integrations)* Add chrono/utc feature flag when using qdrant ([#684](https://github.com/bosun-ai/swiftide/pull/684)) ````text The Qdrant integration calls chrono::Utc::now(), which requires the now feature flag to be enabled in the chrono crate when using qdrant ```` - [0b204d9](https://github.com/bosun-ai/swiftide/commit/0b204d90a68978bb4b75516c537a56d665771c55) Ensure `groq` | Low | 3/17/2025 |
| v0.22.3 | ### Miscellaneous - [834fcd3](https://github.com/bosun-ai/swiftide/commit/834fcd3b2270904bcfe8998a7015de15626128a8) Update duckdb to 1.2.1 ([#680](https://github.com/bosun-ai/swiftide/pull/680)) **Full Changelog**: https://github.com/bosun-ai/swiftide/compare/0.22.2...0.22.3 | Low | 3/13/2025 |
| v0.22.2 | ### Miscellaneous - [0000000](https://github.com/bosun-ai/swiftide/commit/0000000) Update Cargo.toml dependencies - [e1c097d](https://github.com/bosun-ai/swiftide/commit/e1c097da885374ec9320c1847a7dda7c5d9d41cb) Disable default features on all dependencies ([#675](https://github.com/bosun-ai/swiftide/pull/675)) **Full Changelog**: https://github.com/bosun-ai/swiftide/compare/0.22.1...0.22.2 | Low | 3/11/2025 |
| v0.22.1 | ### New features - [474d612](https://github.com/bosun-ai/swiftide/commit/474d6122596e71132e35fcb181302dfed7794561) *(integrations)* Add Duckdb support ([#578](https://github.com/bosun-ai/swiftide/pull/578)) ````text Adds support for Duckdb. Persist, Retrieve (Simple and Custom), and NodeCache are implemented. Metadata and full upsert are not. Once 1.2 has its issues fixed, it's easy to add. ```` - [4cf417c](https://github.com/bosun-ai/swiftide/commit/4cf417c6a818fbec2641ad6576b | Low | 3/9/2025 |
| v0.22.0 | ### New features - [a754846](https://github.com/bosun-ai/swiftide/commit/a7548463367023d3e5a3a25dd84f06632b372f18) *(agents)* Implement Serialize and Deserialize for chat messages ````text Persist, retry later, evaluate it completions in a script, you name it. ```` - [0a592c6](https://github.com/bosun-ai/swiftide/commit/0a592c67621f3eba4ad6e0bfd5a539e19963cf17) *(indexing)* Add `iter()` for file loader ([#655](https://github.com/bosun-ai/swiftide/pull/655)) ````text Allows playing with the | Low | 3/5/2025 |
| v0.21.1 | ### Bug fixes - [f418c5e](https://github.com/bosun-ai/swiftide/commit/f418c5ee2f0d3ee87fb3715ec6b1d7ecc80bf714) *(ci)* Run just a single real rerank test to please the flaky gods - [e387e82](https://github.com/bosun-ai/swiftide/commit/e387e826200e1bc0a608e1f680537751cfc17969) *(lancedb)* Update Lancedb to 0.17 and pin Arrow to a lower version ### Miscellaneous - [0000000](https://github.com/bosun-ai/swiftide/commit/0000000) Update Cargo.toml dependencies **Full Changelog**: https://gith | Low | 2/28/2025 |
| v0.21.0 | ### New features - [12a9873](https://github.com/bosun-ai/swiftide/commit/12a98736ab171c25d860000bb95b1e6e318758fb) *(agents)* Improve flexibility for tool generation (#641) ````text Previously ToolSpec and name in the `Tool` trait worked with static. With these changes, there is a lot more flexibility, allowing for i.e. run-time tool generation. ```` ### Miscellaneous - [0000000](https://github.com/bosun-ai/swiftide/commit/0000000) Update Cargo.toml dependencies **Full Changelog**: h | Low | 2/25/2025 |
| v0.20.1 | ### Bug fixes - [0aa1248](https://github.com/bosun-ai/swiftide/commit/0aa124819d836f37d1fcaf88e6f88b5affb46cf9) *(indexing)* Handle invalid utf-8 in fileloader lossy (#632) **Full Changelog**: https://github.com/bosun-ai/swiftide/compare/0.20.0...0.20.1 | Low | 2/21/2025 |
| v0.20.0 | ### New features - [5d85d14](https://github.com/bosun-ai/swiftide/commit/5d85d142339d24c793bd89a907652bede0d1c94d) *(agents)* Add support for numbers, arrays and booleans in tool args (#562) ````text Add support for numbers, arrays and boolean types in the `#[swiftide_macros::tool]` attribute macro. For enum and object a custom implementation is now properly supported as well, but not via the macro. For now, tools using Derive also still need a custom implementation. ```` - | Low | 2/19/2025 |
| v0.19.0 | ### New features - [fa5112c](https://github.com/bosun-ai/swiftide/commit/fa5112c9224fdf5984d26db669f04dedc8ebb561) *(agents)* By default retry failed tools with LLM up to 3 times (#609) ````text Specifically meant for LLMs sending invalid JSON, these tool calls are now retried by feeding back the error into the LLM up to a limit (default 3). ```` - [14f4778](https://github.com/bosun-ai/swiftide/commit/14f47780b4294be3a9fa3670aa18a952ad7e9d6e) *(integrations)* Parallel tool calling in Op | Low | 2/13/2025 |
| v0.18.2 | ### New features - [50ffa15](https://github.com/bosun-ai/swiftide/commit/50ffa156e28bb085a61a376bab71c135bc09622f) Anthropic support for prompts and agents (#602) ### Bug fixes - [8cf70e0](https://github.com/bosun-ai/swiftide/commit/8cf70e08787d1376ba20001cc9346767d8bd84ef) *(integrations)* Ensure anthropic tool call format is consistent with specs ### Miscellaneous - [98176c6](https://github.com/bosun-ai/swiftide/commit/98176c603b61e3971ca5583f9f4346eb5b962d51) Clippy **Full Changelog | Low | 2/11/2025 |
| v0.18.1 | ### New features - [78bf0e0](https://github.com/bosun-ai/swiftide/commit/78bf0e004049c852d4e32c0cd67725675b1250f9) *(agents)* Add optional limit for agent iterations (#599) - [592e5a2](https://github.com/bosun-ai/swiftide/commit/592e5a2ca4b0f09ba6a9b20cef105539cb7a7909) *(integrations)* Support Azure openai via generics (#596) - [c8f2eed](https://github.com/bosun-ai/swiftide/commit/c8f2eed9964341ac2dad611fc730dc234436430a) *(tree-sitter)* Add solidity support (#597) **Full Chang | Low | 2/9/2025 |
| v0.18.0 | ### New features - [de46656](https://github.com/bosun-ai/swiftide/commit/de46656f80c5cf68cc192d21b5f34eb3e0667a14) *(agents)* Add `on_start` hook (#586) - [c551f1b](https://github.com/bosun-ai/swiftide/commit/c551f1becfd1750ce480a00221a34908db61e42f) *(integrations)* OpenRouter support (#589) ````text Adds OpenRouter support. OpenRouter allows you to use any LLM via their own api (with a minor upsell). ```` ### Bug fixes - [3ea5839](https://github.com/bosun-ai/swiftide/comm | Low | 2/2/2025 |
| v0.17.5 | ### New features - [825a52e](https://github.com/bosun-ai/swiftide/commit/825a52e70a74e4621d370485346a78d61bf5d7a9) *(agents)* Tool description now also accepts paths (i.e. a const) (#580) ### Miscellaneous - [0000000](https://github.com/bosun-ai/swiftide/commit/0000000) Update Cargo.lock dependencies - [0000000](https://github.com/bosun-ai/swiftide/commit/0000000) Update Cargo.toml dependencies **Full Changelog**: https://github.com/bosun-ai/swiftide/compare/0.17.4...0.17.5 | Low | 1/27/2025 |
| v0.17.4 | ### Bug fixes - [0d9e250](https://github.com/bosun-ai/swiftide/commit/0d9e250e2512fe9c66d5dfd2ac688dcd56bd07e9) *(tracing)* Use `or_current()` to prevent orphaned tracing spans (#573) ````text When a span is emitted that would be selected by the subscriber, but we instrument its closure with a span that would not be selected by the subscriber, the span would be emitted as an orphan (with a new `trace_id`) making them hard to find and cluttering dashboards. This situation is also docu | Low | 1/24/2025 |
| v0.17.3 | ### New features - [8e22442](https://github.com/bosun-ai/swiftide/commit/8e2244241f16fff77591cf04f40725ad0b05ca81) *(integrations)* Support Qdrant 1.13 (#571) ### Bug fixes - [c5408a9](https://github.com/bosun-ai/swiftide/commit/c5408a96fbed6207022eb493da8d2cbb0fea7ca6) *(agents)* Io::Error should always be a NonZeroExit error for tool executors (#570) ### Miscellaneous - [0000000](https://github.com/bosun-ai/swiftide/commit/0000000) Update Cargo.toml dependencies - [0000000](https://gi | Low | 1/24/2025 |
| v0.17.2 | ### Bug fixes - [47db5ab](https://github.com/bosun-ai/swiftide/commit/47db5ab138384a6c235a90024470e9ab96751cc8) *(agents)* Redrive uses the correct pointer and works as intended **Full Changelog**: https://github.com/bosun-ai/swiftide/compare/0.17.1...0.17.2 | Low | 1/21/2025 |
| v0.17.1 | ### New features - [e4e4468](https://github.com/bosun-ai/swiftide/commit/e4e44681b65b07b5f1e987ce468bdcda61eb30da) *(agents)* Implement AgentContext for smart dyn pointers - [70181d9](https://github.com/bosun-ai/swiftide/commit/70181d9642aa2c0a351b9f42be1a8cdbd83c9075) *(agents)* Add pub accessor for agent context (#558) - [274d9d4](https://github.com/bosun-ai/swiftide/commit/274d9d46f39ac2e28361c4881c6f8f7e20dd8753) *(agents)* Preprocess tool calls to fix common, fixable errors (#560) `` | Low | 1/20/2025 |
| v0.17.0 | ### New features - [835c35e](https://github.com/bosun-ai/swiftide/commit/835c35e7d74811daa90f7ca747054d1919633058) *(agents)* Redrive completions manually on failure (#551) ````text Sometimes LLMs fail a completion without deterministic errors, or the user case where you just want to retry. `redrive` can now be called on a context, popping any new messages (if any), and making the messages available again to the agent. ```` - [f83f3f0](https://github.com/bosun-ai/swiftide/commit/f83f3f | Low | 1/16/2025 |
| v0.16.4 | ### New features - [c919484](https://github.com/bosun-ai/swiftide/commit/c9194845faa12b8a0fcecdd65f8ec9d3d221ba08) Ollama via async-openai with chatcompletion support (#545) ````text Adds support for chatcompletions (agents) for ollama. SimplePrompt and embeddings now use async-openai underneath. Copy pasted as I expect some differences in the future. ```` ### Miscellaneous - [0000000](https://github.com/bosun-ai/swiftide/commit/0000000) Update Cargo.toml dependencies **Full Changelog | Low | 1/12/2025 |
| v0.16.3 | ### New features - [b66bd79](https://github.com/bosun-ai/swiftide/commit/b66bd79070772d7e1bfe10a22531ccfd6501fc2a) *(fastembed)* Add support for jina v2 code (#541) ````text Add support for jina v2 code in fastembed. ```` **Full Changelog**: https://github.com/bosun-ai/swiftide/compare/0.16.2...0.16.3 | Low | 1/10/2025 |
| v0.16.2 | ### Bug fixes - [2226755](https://github.com/bosun-ai/swiftide/commit/2226755f367d9006870a2dea2063655a7901d427) Explicit cast on tools to Box<dyn> to make analyzer happy (#536) **Full Changelog**: https://github.com/bosun-ai/swiftide/compare/0.16.1...0.16.2 | Low | 1/9/2025 |
| v0.16.1 | ### Bug fixes - [d198bb0](https://github.com/bosun-ai/swiftide/commit/d198bb0807f5d5b12a51bc76721cc945be8e65b9) *(prompts)* Skip rendering prompts if no context and forward as is (#530) ````text Fixes an issue if strings suddenly include jinja style values by mistake. Bonus performance boost. ```` - [4e8d59f](https://github.com/bosun-ai/swiftide/commit/4e8d59fbc0fbe72dd0f8d6a95e6e335280eb88e3) *(redb)* Log errors and return uncached instead of panicing (#531) **Full Changelog**: https:/ | Low | 1/6/2025 |
| v0.16.0 | ### New features - [52e341e](https://github.com/bosun-ai/swiftide/commit/52e341ee9777d04f9fb07054980ba087c55c033e) *(lancedb)* Public method for opening table (#514) - [3254bd3](https://github.com/bosun-ai/swiftide/commit/3254bd34d0eeb038c8aa6ea56ac2940b3ca81960) *(query)* Generic templates with document rendering (#520) ````text Reworks `PromptTemplate` to a more generic `Template`, such that they can also be used elsewhere. This deprecates `PromptTemplate`. As an example, an optional | Low | 1/4/2025 |
| v0.15.0 | ### New features - [a1b9a2d](https://github.com/bosun-ai/swiftide/commit/a1b9a2d37715420d3e2cc80d731e3713a22c7c50) *(query)* Ensure concrete names for transformations are used when debugging (#496) - [7779c44](https://github.com/bosun-ai/swiftide/commit/7779c44de3581ac865ac808637c473525d27cabb) *(query)* Ensure query pipeline consistently debug logs in all other stages too - [55dde88](https://github.com/bosun-ai/swiftide/commit/55dde88df888b60a7ccae5a68ba03d20bc1f57df) *(query)* Debug full | Low | 12/24/2024 |
| v0.14.4 | ### New features - [7211559](https://github.com/bosun-ai/swiftide/commit/7211559936d8b5e16a3b42f9c90b42a39426be8a) *(agents)* **EXPERIMENTAL** Agents in Swiftide (#463) ````text Agents are coming to Swiftide! We are still ironing out all the kinks, while we make it ready for a proper release. You can already experiment with agents, see the rustdocs for documentation, and an example in `/examples`, and feel free to contact us via github or discord. Better documentation, examples, and t | Low | 12/12/2024 |
| v0.14.3 | ### New features - [1774b84](https://github.com/bosun-ai/swiftide/commit/1774b84f00a83fe69af4a2b6a6daf397d4d9b32d) *(integrations)* Add PGVector support for indexing ([#392](https://github.com/bosun-ai/swiftide/pull/392)) **Full Changelog**: https://github.com/bosun-ai/swiftide/compare/0.14.2...0.14.3 | Low | 11/20/2024 |