asimov-patterns 25.1.0

ASIMOV Software Development Kit (SDK) for Rust
Documentation
# ASIMOV Software Development Kit (SDK) for Rust

[![License](https://img.shields.io/badge/license-Public%20Domain-blue.svg)](https://unlicense.org)
[![Compatibility](https://img.shields.io/badge/rust-1.85%2B-blue)](https://blog.rust-lang.org/2025/02/20/Rust-1.85.0/)
[![Package](https://img.shields.io/crates/v/asimov-sdk)](https://crates.io/crates/asimov-sdk)
[![Documentation](https://img.shields.io/docsrs/asimov-sdk?label=docs.rs)](https://docs.rs/asimov-sdk)

**[ASIMOV] is a polyglot development platform for [trustworthy, neurosymbolic AI].**

<br/>

<sub>

[[Features](#-features)] |
[[Prerequisites](#%EF%B8%8F-prerequisites)] |
[[Installation](#%EF%B8%8F-installation)] |
[[Examples](#-examples)] |
[[Reference](#-reference)] |
[[Development](#%E2%80%8D-development)]

</sub>

## ✨ Features

- Defines [flow-based] [program patterns] for refining data into knowledge.
- Implements a [module system] supporting an ecosystem of [ASIMOV modules].
- Enables dataflow systems through reusable components called blocks.
- Built on the dataflow primitives provided by the [Async-Flow] crate.
- Compatible with the inventory of dataflow blocks provided by [Flows.rs].
- 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.

## 🛠️ Prerequisites

- [Rust]https://rust-lang.org 1.85+ (2024 edition)

## ⬇️ Installation

### Installation via Cargo

```bash
cargo add asimov-sdk --rename asimov
```

### Installation in `Cargo.toml` (with all features enabled)

```toml
[dependencies]
asimov = { package = "asimov-sdk", "version" = "25" }
```

### Installation in `Cargo.toml` (with only specific features enabled)

```toml
[dependencies]
asimov = { package = "asimov-sdk", "version" = "25", default-features = false, features = ["tracing"] }
```

## 👉 Examples

### Importing the SDK

```rust
use asimov::{config, env, flow, id, kb, patterns, registry, runner, snapshot};
```

## 📚 Reference

[docs.rs/asimov-sdk](https://docs.rs/asimov-sdk)

### Packages

| Package | Crate | Docs |
| :------ | :---- | :--- |
| [asimov-account]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-account | [![Package]https://img.shields.io/crates/v/asimov-account]https://crates.io/crates/asimov-account | [![Documentation]https://img.shields.io/docsrs/asimov-account?label=docs.rs]https://docs.rs/asimov-account |
| [asimov-agent]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-agent | [![Package]https://img.shields.io/crates/v/asimov-agent]https://crates.io/crates/asimov-agent | [![Documentation]https://img.shields.io/docsrs/asimov-agent?label=docs.rs]https://docs.rs/asimov-agent |
| [asimov-cache]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-cache | [![Package]https://img.shields.io/crates/v/asimov-cache]https://crates.io/crates/asimov-cache | [![Documentation]https://img.shields.io/docsrs/asimov-cache?label=docs.rs]https://docs.rs/asimov-cache |
| [asimov-cloud]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-cloud | [![Package]https://img.shields.io/crates/v/asimov-cloud]https://crates.io/crates/asimov-cloud | [![Documentation]https://img.shields.io/docsrs/asimov-cloud?label=docs.rs]https://docs.rs/asimov-cloud |
| [asimov-config]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-config | [![Package]https://img.shields.io/crates/v/asimov-config]https://crates.io/crates/asimov-config | [![Documentation]https://img.shields.io/docsrs/asimov-config?label=docs.rs]https://docs.rs/asimov-config |
| [asimov-construct]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-construct | [![Package]https://img.shields.io/crates/v/asimov-construct]https://crates.io/crates/asimov-construct | [![Documentation]https://img.shields.io/docsrs/asimov-construct?label=docs.rs]https://docs.rs/asimov-construct |
| [asimov-core]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-core | [![Package]https://img.shields.io/crates/v/asimov-core]https://crates.io/crates/asimov-core | [![Documentation]https://img.shields.io/docsrs/asimov-core?label=docs.rs]https://docs.rs/asimov-core |
| [asimov-credit]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-credit | [![Package]https://img.shields.io/crates/v/asimov-credit]https://crates.io/crates/asimov-credit | [![Documentation]https://img.shields.io/docsrs/asimov-credit?label=docs.rs]https://docs.rs/asimov-credit |
| [asimov-dataset]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-dataset | [![Package]https://img.shields.io/crates/v/asimov-dataset]https://crates.io/crates/asimov-dataset | [![Documentation]https://img.shields.io/docsrs/asimov-dataset?label=docs.rs]https://docs.rs/asimov-dataset |
| [asimov-directory]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-directory | [![Package]https://img.shields.io/crates/v/asimov-directory]https://crates.io/crates/asimov-directory | [![Documentation]https://img.shields.io/docsrs/asimov-directory?label=docs.rs]https://docs.rs/asimov-directory |
| [asimov-env]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-env | [![Package]https://img.shields.io/crates/v/asimov-env]https://crates.io/crates/asimov-env | [![Documentation]https://img.shields.io/docsrs/asimov-env?label=docs.rs]https://docs.rs/asimov-env |
| [asimov-flow]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-flow | [![Package]https://img.shields.io/crates/v/asimov-flow]https://crates.io/crates/asimov-flow | [![Documentation]https://img.shields.io/docsrs/asimov-flow?label=docs.rs]https://docs.rs/asimov-flow |
| [asimov-graph]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-graph | [![Package]https://img.shields.io/crates/v/asimov-graph]https://crates.io/crates/asimov-graph | [![Documentation]https://img.shields.io/docsrs/asimov-graph?label=docs.rs]https://docs.rs/asimov-graph |
| [asimov-huggingface]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-huggingface | [![Package]https://img.shields.io/crates/v/asimov-huggingface]https://crates.io/crates/asimov-huggingface | [![Documentation]https://img.shields.io/docsrs/asimov-huggingface?label=docs.rs]https://docs.rs/asimov-huggingface |
| [asimov-id]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-id | [![Package]https://img.shields.io/crates/v/asimov-id]https://crates.io/crates/asimov-id | [![Documentation]https://img.shields.io/docsrs/asimov-id?label=docs.rs]https://docs.rs/asimov-id |
| [asimov-installer]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-installer | [![Package]https://img.shields.io/crates/v/asimov-installer]https://crates.io/crates/asimov-installer | [![Documentation]https://img.shields.io/docsrs/asimov-installer?label=docs.rs]https://docs.rs/asimov-installer |
| [asimov-kb]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-kb | [![Package]https://img.shields.io/crates/v/asimov-kb]https://crates.io/crates/asimov-kb | [![Documentation]https://img.shields.io/docsrs/asimov-kb?label=docs.rs]https://docs.rs/asimov-kb |
| [asimov-ledger]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-ledger | [![Package]https://img.shields.io/crates/v/asimov-ledger]https://crates.io/crates/asimov-ledger | [![Documentation]https://img.shields.io/docsrs/asimov-ledger?label=docs.rs]https://docs.rs/asimov-ledger |
| [asimov-module]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-module | [![Package]https://img.shields.io/crates/v/asimov-module]https://crates.io/crates/asimov-module | [![Documentation]https://img.shields.io/docsrs/asimov-module?label=docs.rs]https://docs.rs/asimov-module |
| [asimov-nexus]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-nexus | [![Package]https://img.shields.io/crates/v/asimov-nexus]https://crates.io/crates/asimov-nexus | [![Documentation]https://img.shields.io/docsrs/asimov-nexus?label=docs.rs]https://docs.rs/asimov-nexus |
| [asimov-ontology]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-ontology | [![Package]https://img.shields.io/crates/v/asimov-ontology]https://crates.io/crates/asimov-ontology | [![Documentation]https://img.shields.io/docsrs/asimov-ontology?label=docs.rs]https://docs.rs/asimov-ontology |
| [asimov-patterns]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-patterns | [![Package]https://img.shields.io/crates/v/asimov-patterns]https://crates.io/crates/asimov-patterns | [![Documentation]https://img.shields.io/docsrs/asimov-patterns?label=docs.rs]https://docs.rs/asimov-patterns |
| [asimov-platform]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-platform | [![Package]https://img.shields.io/crates/v/asimov-platform]https://crates.io/crates/asimov-platform | [![Documentation]https://img.shields.io/docsrs/asimov-platform?label=docs.rs]https://docs.rs/asimov-platform |
| [asimov-prompt]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-prompt | [![Package]https://img.shields.io/crates/v/asimov-prompt]https://crates.io/crates/asimov-prompt | [![Documentation]https://img.shields.io/docsrs/asimov-prompt?label=docs.rs]https://docs.rs/asimov-prompt |
| [asimov-protocol]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-protocol | [![Package]https://img.shields.io/crates/v/asimov-protocol]https://crates.io/crates/asimov-protocol | [![Documentation]https://img.shields.io/docsrs/asimov-protocol?label=docs.rs]https://docs.rs/asimov-protocol |
| [asimov-proxy]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-proxy | [![Package]https://img.shields.io/crates/v/asimov-proxy]https://crates.io/crates/asimov-proxy | [![Documentation]https://img.shields.io/docsrs/asimov-proxy?label=docs.rs]https://docs.rs/asimov-proxy |
| [asimov-registry]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-registry | [![Package]https://img.shields.io/crates/v/asimov-registry]https://crates.io/crates/asimov-registry | [![Documentation]https://img.shields.io/docsrs/asimov-registry?label=docs.rs]https://docs.rs/asimov-registry |
| [asimov-repository]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-repository | [![Package]https://img.shields.io/crates/v/asimov-repository]https://crates.io/crates/asimov-repository | [![Documentation]https://img.shields.io/docsrs/asimov-repository?label=docs.rs]https://docs.rs/asimov-repository |
| [asimov-runner]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-runner | [![Package]https://img.shields.io/crates/v/asimov-runner]https://crates.io/crates/asimov-runner | [![Documentation]https://img.shields.io/docsrs/asimov-runner?label=docs.rs]https://docs.rs/asimov-runner |
| [asimov-runtime]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-runtime | [![Package]https://img.shields.io/crates/v/asimov-runtime]https://crates.io/crates/asimov-runtime | [![Documentation]https://img.shields.io/docsrs/asimov-runtime?label=docs.rs]https://docs.rs/asimov-runtime |
| [asimov-sdk]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-sdk | [![Package]https://img.shields.io/crates/v/asimov-sdk]https://crates.io/crates/asimov-sdk | [![Documentation]https://img.shields.io/docsrs/asimov-sdk?label=docs.rs]https://docs.rs/asimov-sdk |
| [asimov-server]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-server | [![Package]https://img.shields.io/crates/v/asimov-server]https://crates.io/crates/asimov-server | [![Documentation]https://img.shields.io/docsrs/asimov-server?label=docs.rs]https://docs.rs/asimov-server |
| [asimov-snapshot]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-snapshot | [![Package]https://img.shields.io/crates/v/asimov-snapshot]https://crates.io/crates/asimov-snapshot | [![Documentation]https://img.shields.io/docsrs/asimov-snapshot?label=docs.rs]https://docs.rs/asimov-snapshot |
| [asimov-token]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-token | [![Package]https://img.shields.io/crates/v/asimov-token]https://crates.io/crates/asimov-token | [![Documentation]https://img.shields.io/docsrs/asimov-token?label=docs.rs]https://docs.rs/asimov-token |
| [asimov-universe]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-universe | [![Package]https://img.shields.io/crates/v/asimov-universe]https://crates.io/crates/asimov-universe | [![Documentation]https://img.shields.io/docsrs/asimov-universe?label=docs.rs]https://docs.rs/asimov-universe |
| [asimov-vault]https://github.com/asimov-platform/asimov.rs/tree/master/lib/asimov-vault | [![Package]https://img.shields.io/crates/v/asimov-vault]https://crates.io/crates/asimov-vault | [![Documentation]https://img.shields.io/docsrs/asimov-vault?label=docs.rs]https://docs.rs/asimov-vault |

## 👨‍💻 Development

```bash
git clone https://github.com/asimov-platform/asimov.rs.git
```

### Glossary

- **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 + 'static` traits can
  be used as a message.

---

[![Share on X](https://img.shields.io/badge/share%20on-x-03A9F4?logo=x)](https://x.com/intent/post?url=https://github.com/asimov-platform/asimov.rs&text=ASIMOV%20Software%20Development%20Kit%20%28SDK%29%20for%20Rust)
[![Share on Reddit](https://img.shields.io/badge/share%20on-reddit-red?logo=reddit)](https://reddit.com/submit?url=https://github.com/asimov-platform/asimov.rs&title=ASIMOV%20Software%20Development%20Kit%20%28SDK%29%20for%20Rust)
[![Share on Hacker News](https://img.shields.io/badge/share%20on-hn-orange?logo=ycombinator)](https://news.ycombinator.com/submitlink?u=https://github.com/asimov-platform/asimov.rs&t=ASIMOV%20Software%20Development%20Kit%20%28SDK%29%20for%20Rust)
[![Share on Facebook](https://img.shields.io/badge/share%20on-fb-1976D2?logo=facebook)](https://www.facebook.com/sharer/sharer.php?u=https://github.com/asimov-platform/asimov.rs)
[![Share on LinkedIn](https://img.shields.io/badge/share%20on-linkedin-3949AB?logo=linkedin)](https://www.linkedin.com/sharing/share-offsite/?url=https://github.com/asimov-platform/asimov.rs)

[ASIMOV]: https://asimov.sh
[ASIMOV modules]: https://github.com/asimov-modules
[Async-Flow]: https://github.com/artob/async-flow
[Flows.rs]: https://github.com/artob/flows.rs
[flow-based]: https://github.com/artob/awesome-fbp
[naming conventions]: https://rust-lang.github.io/api-guidelines/naming.html
[module system]: https://asimov-specs.github.io/
[program patterns]: https://asimov-specs.github.io/program-patterns/
[trustworthy, neurosymbolic AI]: https://asimov.blog/introducing-asimov/