ASIMOV is a polyglot development platform for trustworthy neurosymbolic machine intelligence.
[Features] | [Prerequisites] | [Installation] | [Examples] | [Reference] | [Development]
- Defines flow-based program patterns for refining data into knowledge.
- Implements a module system enabling an ecosystem of modules.
- Enables dataflow systems through reusable components called blocks.
- Compatible with the inventory of dataflow blocks provided by Flows.rs.
- Built on the dataflow primitives provided by the Async-Flow crate.
- Supports opting out of any feature using comprehensive feature flags.
- Adheres to the Rust API Guidelines in its naming conventions.
- Cuts red tape: 100% free and unencumbered public domain software.
- Rust 1.93+ (2024 edition)
cargo add asimov-sdk --rename asimov[dependencies]
asimov = { package = "asimov-sdk", version = "25" }Alternatively, enable only specific features:
[dependencies]
asimov = { package = "asimov-sdk", version = "25", default-features = false, features = ["tracing"] }use asimov::{config, directory, env, flow, id, kb, patterns, registry, runner, snapshot};// cargo run --package asimov-directory --example list_modules
use asimov::directory::{ModuleNameIterator, fs::StateDirectory};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let modules = StateDirectory::home()?.modules()?;
let mut module_names = modules.iter_installed().await?;
while let Some(module_name) = module_names.next().await {
println!("{}", module_name);
}
Ok(())
}-
Module: A collection of systems and blocks, packaged as a reusable unit.
-
System: A collection of blocks that are connected together. Systems are the top-level entities in dataflow programs.
-
Block: An encapsulated system component that processes messages. Blocks are the autonomous units of computation in a system.
-
Port: A named connection point on a block that sends or receives messages. Ports are the only interfaces through which blocks communicate with each other.
-
Message: A unit of data that flows between blocks in a system, from port to port. Any Rust type that implements the
Send + Sync + 'statictraits can be used as a message.
git clone https://github.com/asimov-platform/asimov.rs.git