[package]
edition = "2021"
name = "oris-runtime"
version = "0.1.1"
authors = ["Jiafan"]
build = false
publish = true
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "An agentic workflow runtime and programmable AI execution system in Rust: stateful graphs, agents, tools, and multi-step execution."
homepage = "https://github.com/fanjia1024/oris"
documentation = "https://docs.rs/oris-runtime"
readme = "README.md"
keywords = [
"agent",
"workflow",
"llm",
"runtime",
"graph",
]
categories = [
"development-tools",
"asynchronous",
"data-structures",
"text-processing",
]
license = "MIT"
repository = "https://github.com/fanjia1024/oris"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
arxiv = []
aws-s3 = [
"aws-sdk-s3",
"aws-config",
]
bedrock = [
"aws-sdk-bedrockruntime",
"aws-config",
]
bm25 = []
browser-use = ["dep:headless_chrome"]
chroma = [
"dep:chromadb",
"uuid",
]
cohere = []
contextual-ai = []
default = []
excel = ["calamine"]
faiss = [
"dep:hnsw_rs",
"uuid",
]
fastembed = ["dep:fastembed"]
flashrank = []
gemini = ["google-ai-rs"]
git = [
"gix",
"flume",
]
github = [
"octocrab",
"dep:base64",
]
html-to-markdown = ["dep:htmd"]
in-memory = []
llmlingua = []
lopdf = ["dep:lopdf"]
milvus = [
"dep:milvus-sdk-rust",
"uuid",
]
mistralai = ["mistralai-client"]
mongodb = [
"dep:mongodb",
"uuid",
]
ollama = ["ollama-rs"]
opensearch = [
"dep:opensearch",
"aws-config",
]
pdf-extract = [
"dep:lopdf",
"dep:pdf-extract",
]
pinecone = [
"dep:pinecone-rs",
"uuid",
]
postgres = [
"pgvector",
"sqlx",
"uuid",
]
qdrant = [
"qdrant-client",
"uuid",
]
sqlite-persistence = ["rusqlite"]
sqlite-vec = ["sqlx"]
sqlite-vss = ["sqlx"]
surrealdb = ["dep:surrealdb"]
svm = []
tavily = []
tfidf = []
toml = ["dep:toml"]
tree-sitter = [
"cc",
"dep:tree-sitter",
"dep:tree-sitter-c",
"dep:tree-sitter-c-sharp",
"dep:tree-sitter-cpp",
"dep:tree-sitter-go",
"dep:tree-sitter-java",
"dep:tree-sitter-javascript",
"dep:tree-sitter-kotlin-ng",
"dep:tree-sitter-python",
"dep:tree-sitter-rust",
"dep:tree-sitter-scala",
"dep:tree-sitter-typescript",
]
uuid = ["dep:uuid"]
weaviate = [
"dep:weaviate-community",
"uuid",
]
wikipedia = []
xml = ["quick-xml"]
yaml = ["serde_yaml"]
[lib]
name = "oris_runtime"
path = "src/lib.rs"
[[example]]
name = "advanced_tools"
path = "examples/advanced_tools.rs"
[[example]]
name = "agent"
path = "examples/agent.rs"
[[example]]
name = "configurable_model"
path = "examples/configurable_model.rs"
[[example]]
name = "context_engineering_complete"
path = "examples/context_engineering_complete.rs"
[[example]]
name = "context_engineering_dynamic_prompt"
path = "examples/context_engineering_dynamic_prompt.rs"
[[example]]
name = "context_engineering_dynamic_tools"
path = "examples/context_engineering_dynamic_tools.rs"
[[example]]
name = "context_engineering_message_injection"
path = "examples/context_engineering_message_injection.rs"
[[example]]
name = "conversational_chain"
path = "examples/conversational_chain.rs"
[[example]]
name = "conversational_retriever_chain_with_vector_store"
path = "examples/conversational_retriever_chain_with_vector_store.rs"
[[example]]
name = "conversational_retriever_simple_chain"
path = "examples/conversational_retriever_simple_chain.rs"
[[example]]
name = "create_agent_simple"
path = "examples/create_agent_simple.rs"
[[example]]
name = "deep_agent_basic"
path = "examples/deep_agent_basic.rs"
[[example]]
name = "deep_agent_customization"
path = "examples/deep_agent_customization.rs"
[[example]]
name = "deep_agent_filesystem"
path = "examples/deep_agent_filesystem.rs"
[[example]]
name = "deep_agent_human_in_the_loop"
path = "examples/deep_agent_human_in_the_loop.rs"
[[example]]
name = "deep_agent_long_term_memory"
path = "examples/deep_agent_long_term_memory.rs"
[[example]]
name = "deep_agent_planning"
path = "examples/deep_agent_planning.rs"
[[example]]
name = "deep_agent_skills"
path = "examples/deep_agent_skills.rs"
[[example]]
name = "deep_agent_with_task"
path = "examples/deep_agent_with_task.rs"
[[example]]
name = "dynamic_semantic_routes"
path = "examples/dynamic_semantic_routes.rs"
[[example]]
name = "embedding_azure_open_ai"
path = "examples/embedding_azure_open_ai.rs"
[[example]]
name = "embedding_fastembed"
path = "examples/embedding_fastembed.rs"
[[example]]
name = "embedding_mistralai"
path = "examples/embedding_mistralai.rs"
[[example]]
name = "embedding_ollama"
path = "examples/embedding_ollama.rs"
[[example]]
name = "embedding_openai"
path = "examples/embedding_openai.rs"
[[example]]
name = "git_commits"
path = "examples/git_commits.rs"
[[example]]
name = "graph_agent_workflow"
path = "examples/graph_agent_workflow.rs"
[[example]]
name = "graph_hello_world"
path = "examples/graph_hello_world.rs"
[[example]]
name = "graph_interrupts"
path = "examples/graph_interrupts.rs"
[[example]]
name = "graph_interrupts_approval"
path = "examples/graph_interrupts_approval.rs"
[[example]]
name = "graph_interrupts_review"
path = "examples/graph_interrupts_review.rs"
[[example]]
name = "graph_memory_basic"
path = "examples/graph_memory_basic.rs"
[[example]]
name = "graph_memory_store"
path = "examples/graph_memory_store.rs"
[[example]]
name = "graph_parallel_execution"
path = "examples/graph_parallel_execution.rs"
[[example]]
name = "graph_persistence_basic"
path = "examples/graph_persistence_basic.rs"
[[example]]
name = "graph_persistence_replay"
path = "examples/graph_persistence_replay.rs"
[[example]]
name = "graph_persistence_sqlite"
path = "examples/graph_persistence_sqlite.rs"
[[example]]
name = "graph_streaming"
path = "examples/graph_streaming.rs"
[[example]]
name = "graph_subgraph_shared_state"
path = "examples/graph_subgraph_shared_state.rs"
[[example]]
name = "graph_subgraph_streaming"
path = "examples/graph_subgraph_streaming.rs"
[[example]]
name = "graph_task_example"
path = "examples/graph_task_example.rs"
[[example]]
name = "graph_time_travel"
path = "examples/graph_time_travel.rs"
[[example]]
name = "graph_time_travel_fork"
path = "examples/graph_time_travel_fork.rs"
[[example]]
name = "guardrails_combined"
path = "examples/guardrails_combined.rs"
[[example]]
name = "guardrails_custom"
path = "examples/guardrails_custom.rs"
[[example]]
name = "guardrails_pii"
path = "examples/guardrails_pii.rs"
[[example]]
name = "init_chat_model"
path = "examples/init_chat_model.rs"
[[example]]
name = "invocation_config"
path = "examples/invocation_config.rs"
[[example]]
name = "llm_alibaba_qwen"
path = "examples/llm_alibaba_qwen.rs"
[[example]]
name = "llm_anthropic_claude"
path = "examples/llm_anthropic_claude.rs"
[[example]]
name = "llm_azure_open_ai"
path = "examples/llm_azure_open_ai.rs"
[[example]]
name = "llm_bedrock"
path = "examples/llm_bedrock.rs"
[[example]]
name = "llm_chain"
path = "examples/llm_chain.rs"
[[example]]
name = "llm_chain_deepseek"
path = "examples/llm_chain_deepseek.rs"
[[example]]
name = "llm_chain_qwen"
path = "examples/llm_chain_qwen.rs"
[[example]]
name = "llm_deepseek"
path = "examples/llm_deepseek.rs"
[[example]]
name = "llm_deepseek_advanced"
path = "examples/llm_deepseek_advanced.rs"
[[example]]
name = "llm_gemini"
path = "examples/llm_gemini.rs"
[[example]]
name = "llm_huggingface"
path = "examples/llm_huggingface.rs"
[[example]]
name = "llm_mistralai"
path = "examples/llm_mistralai.rs"
[[example]]
name = "llm_ollama"
path = "examples/llm_ollama.rs"
[[example]]
name = "llm_openai"
path = "examples/llm_openai.rs"
[[example]]
name = "llm_qwen_advanced"
path = "examples/llm_qwen_advanced.rs"
[[example]]
name = "long_term_memory_basic"
path = "examples/long_term_memory_basic.rs"
[[example]]
name = "long_term_memory_search"
path = "examples/long_term_memory_search.rs"
[[example]]
name = "long_term_memory_tool"
path = "examples/long_term_memory_tool.rs"
[[example]]
name = "middleware_custom"
path = "examples/middleware_custom.rs"
[[example]]
name = "middleware_logging"
path = "examples/middleware_logging.rs"
[[example]]
name = "multi_agent_handoffs"
path = "examples/multi_agent_handoffs.rs"
[[example]]
name = "multi_agent_router"
path = "examples/multi_agent_router.rs"
[[example]]
name = "multi_agent_skills"
path = "examples/multi_agent_skills.rs"
[[example]]
name = "multi_agent_subagents"
path = "examples/multi_agent_subagents.rs"
[[example]]
name = "open_ai_tools_agent"
path = "examples/open_ai_tools_agent.rs"
[[example]]
name = "qa_chain"
path = "examples/qa_chain.rs"
[[example]]
name = "rag_agentic"
path = "examples/rag_agentic.rs"
[[example]]
name = "rag_hybrid"
path = "examples/rag_hybrid.rs"
[[example]]
name = "rag_two_step"
path = "examples/rag_two_step.rs"
[[example]]
name = "rcommiter"
path = "examples/rcommiter.rs"
[[example]]
name = "retriever_merger"
path = "examples/retriever_merger.rs"
[[example]]
name = "retriever_wikipedia"
path = "examples/retriever_wikipedia.rs"
[[example]]
name = "runtime_dynamic_prompt"
path = "examples/runtime_dynamic_prompt.rs"
[[example]]
name = "runtime_middleware"
path = "examples/runtime_middleware.rs"
[[example]]
name = "runtime_typed_context"
path = "examples/runtime_typed_context.rs"
[[example]]
name = "semantic_routes"
path = "examples/semantic_routes.rs"
[[example]]
name = "sequential_chain"
path = "examples/sequential_chain.rs"
[[example]]
name = "simple_chain"
path = "examples/simple_chain.rs"
[[example]]
name = "speech2text_openai"
path = "examples/speech2text_openai.rs"
[[example]]
name = "sql_chain"
path = "examples/sql_chain.rs"
[[example]]
name = "streaming_from_chain"
path = "examples/streaming_from_chain.rs"
[[example]]
name = "structured_output"
path = "examples/structured_output.rs"
[[example]]
name = "structured_output_provider"
path = "examples/structured_output_provider.rs"
[[example]]
name = "text_splitter_html"
path = "examples/text_splitter_html.rs"
[[example]]
name = "text_splitter_json"
path = "examples/text_splitter_json.rs"
[[example]]
name = "text_splitter_recursive_character"
path = "examples/text_splitter_recursive_character.rs"
[[example]]
name = "text_to_speech"
path = "examples/text_to_speech.rs"
[[example]]
name = "tool_runtime"
path = "examples/tool_runtime.rs"
[[example]]
name = "travel_planner_agent"
path = "examples/travel_planner_agent.rs"
[[example]]
name = "vector_store_chroma"
path = "examples/vector_store_chroma.rs"
[[example]]
name = "vector_store_faiss"
path = "examples/vector_store_faiss.rs"
[[example]]
name = "vector_store_in_memory"
path = "examples/vector_store_in_memory.rs"
[[example]]
name = "vector_store_mongodb"
path = "examples/vector_store_mongodb.rs"
[[example]]
name = "vector_store_opensearch"
path = "examples/vector_store_opensearch.rs"
[[example]]
name = "vector_store_pinecone"
path = "examples/vector_store_pinecone.rs"
[[example]]
name = "vector_store_postgres"
path = "examples/vector_store_postgres.rs"
[[example]]
name = "vector_store_qdrant"
path = "examples/vector_store_qdrant.rs"
[[example]]
name = "vector_store_sqlite_vec"
path = "examples/vector_store_sqlite_vec.rs"
[[example]]
name = "vector_store_sqlite_vss"
path = "examples/vector_store_sqlite_vss.rs"
[[example]]
name = "vector_store_weaviate"
path = "examples/vector_store_weaviate.rs"
[[example]]
name = "vision_llm_chain"
path = "examples/vision_llm_chain.rs"
[[example]]
name = "wolfram_tool"
path = "examples/wolfram_tool.rs"
[[test]]
name = "architecture"
path = "tests/architecture.rs"
[dependencies.async-openai]
version = "0.28.1"
[dependencies.async-recursion]
version = "1.1.0"
[dependencies.async-stream]
version = "0.3.5"
[dependencies.async-trait]
version = "0.1.80"
[dependencies.aws-config]
version = "1.2"
features = ["behavior-version-latest"]
optional = true
[dependencies.aws-sdk-bedrockruntime]
version = "1"
optional = true
[dependencies.aws-sdk-s3]
version = "1"
optional = true
[dependencies.base64]
version = "0.22"
optional = true
[dependencies.calamine]
version = "0.24"
optional = true
[dependencies.chromadb]
version = "2"
optional = true
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.csv]
version = "1.3.0"
[dependencies.fastembed]
version = "4"
optional = true
[dependencies.flume]
version = "0.11.0"
optional = true
[dependencies.futures]
version = "0.3"
[dependencies.futures-util]
version = "0.3.30"
[dependencies.gix]
version = "0.68.0"
features = [
"parallel",
"revision",
"serde",
]
optional = true
default-features = false
[dependencies.glob]
version = "0.3.1"
[dependencies.google-ai-rs]
version = "0.1"
optional = true
[dependencies.headless_chrome]
version = "1.0"
optional = true
[dependencies.hnsw_rs]
version = "0.3"
optional = true
[dependencies.htmd]
version = "0.1"
optional = true
[dependencies.html-escape]
version = "0.2.13"
[dependencies.jsonschema]
version = "0.17"
[dependencies.log]
version = "0.4.21"
[dependencies.lopdf]
version = "0.34.0"
features = ["nom_parser"]
optional = true
[dependencies.milvus-sdk-rust]
version = "0.1"
optional = true
[dependencies.mistralai-client]
version = "0.14.0"
optional = true
[dependencies.mockito]
version = "1.4.0"
[dependencies.mongodb]
version = "2"
optional = true
[dependencies.octocrab]
version = "0.38"
optional = true
[dependencies.ollama-rs]
version = "0.2.0"
features = [
"stream",
"chat-history",
]
optional = true
[dependencies.opensearch]
version = "2"
features = ["aws-auth"]
optional = true
[dependencies.pdf-extract]
version = "0.7.8"
optional = true
[dependencies.pgvector]
version = "0.4.0"
features = [
"postgres",
"sqlx",
]
optional = true
[dependencies.pinecone-rs]
version = "0.1"
optional = true
[dependencies.qdrant-client]
version = "1.10.1"
optional = true
[dependencies.quick-xml]
version = "0.31"
features = ["async-tokio"]
optional = true
[dependencies.readability]
version = "0.3.0"
[dependencies.regex]
version = "1.10.4"
[dependencies.reqwest]
version = "0.12"
features = [
"json",
"stream",
]
[dependencies.reqwest-eventsource]
version = "0.6.0"
[dependencies.rusqlite]
version = "0.32"
features = ["bundled"]
optional = true
[dependencies.schemars]
version = "0.8"
features = ["derive"]
[dependencies.scraper]
version = "0.21"
[dependencies.secrecy]
version = "0.10.3"
features = ["serde"]
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.serde_yaml]
version = "0.9"
optional = true
[dependencies.sha2]
version = "0.10"
[dependencies.sqlx]
version = "0.8.0"
features = [
"postgres",
"sqlite",
"runtime-tokio-native-tls",
"json",
"uuid",
]
optional = true
default-features = false
[dependencies.strum_macros]
version = "0.27.0"
[dependencies.surrealdb]
version = "2.0.2"
optional = true
default-features = false
[dependencies.text-splitter]
version = "0.29"
features = [
"tiktoken-rs",
"markdown",
"code",
]
[dependencies.thiserror]
version = "2.0.0"
[dependencies.tiktoken-rs]
version = "0.5.8"
[dependencies.tokio]
version = "1"
features = ["full"]
[dependencies.tokio-stream]
version = "0.1.15"
[dependencies.toml]
version = "0.8"
optional = true
[dependencies.tree-sitter]
version = "0.26"
optional = true
[dependencies.tree-sitter-c]
version = "0.23"
optional = true
[dependencies.tree-sitter-c-sharp]
version = "0.23"
optional = true
[dependencies.tree-sitter-cpp]
version = "0.23"
optional = true
[dependencies.tree-sitter-go]
version = "0.23"
optional = true
[dependencies.tree-sitter-java]
version = "0.23"
optional = true
[dependencies.tree-sitter-javascript]
version = "0.23"
optional = true
[dependencies.tree-sitter-kotlin-ng]
version = "1.1"
optional = true
[dependencies.tree-sitter-python]
version = "0.23"
optional = true
[dependencies.tree-sitter-rust]
version = "0.24"
optional = true
[dependencies.tree-sitter-scala]
version = "0.23"
optional = true
[dependencies.tree-sitter-typescript]
version = "0.23"
optional = true
[dependencies.url]
version = "2.5.0"
[dependencies.urlencoding]
version = "2.1.3"
[dependencies.uuid]
version = "1.8.0"
features = ["v4"]
optional = true
[dependencies.weaviate-community]
version = "0.2"
optional = true
[dev-dependencies.base64]
version = "0.22.1"
[dev-dependencies.chrono]
version = "0.4"
features = ["serde"]
[dev-dependencies.env_logger]
version = "0.11"
[dev-dependencies.mongodb]
version = "2"
[dev-dependencies.testcontainers]
version = "0.23"
[dev-dependencies.tokio-test]
version = "0.4.4"
[build-dependencies.cc]
version = "1"
optional = true