Crate arms

Crate arms 

Source
Expand description

§ARMS - Attention Reasoning Memory Store

“The hippocampus of artificial minds”

ARMS is a spatial memory fabric for AI models. It stores computed attention states at their native dimensional coordinates, enabling instant retrieval by proximity rather than traditional indexing.

§Philosophy

  • Position IS relationship - No foreign keys, proximity defines connection
  • Configurable, not hardcoded - Dimensionality, proximity functions, all flexible
  • Generators over assets - Algorithms, not rigid structures
  • Pure core, swappable adapters - Hexagonal architecture

§Architecture

┌─────────────────────────────────────────────────────────────┐
│                         ARMS                                 │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│  CORE (pure math, no I/O)                                   │
│    Point, Id, Blob, Proximity, Merge                        │
│                                                              │
│  PORTS (trait contracts)                                     │
│    Place, Near, Latency                                     │
│                                                              │
│  ADAPTERS (swappable implementations)                       │
│    Storage: Memory, NVMe                                    │
│    Index: Flat, HNSW                                        │
│    API: Python bindings                                      │
│                                                              │
│  ENGINE (orchestration)                                      │
│    Arms - the main entry point                              │
│                                                              │
└─────────────────────────────────────────────────────────────┘

§Quick Start

use arms::{Arms, ArmsConfig, Point};

// Create ARMS with default config (768 dimensions)
let mut arms = Arms::new(ArmsConfig::default());

// Place a point in the space
let point = Point::new(vec![0.1; 768]);
let id = arms.place(point, b"my data".to_vec());

// Find nearby points
let query = Point::new(vec![0.1; 768]);
let neighbors = arms.near(&query, 5);

Re-exports§

pub use crate::core::Point;
pub use crate::core::Id;
pub use crate::core::Blob;
pub use crate::core::PlacedPoint;
pub use crate::core::proximity::Proximity;
pub use crate::core::proximity::Cosine;
pub use crate::core::proximity::Euclidean;
pub use crate::core::proximity::DotProduct;
pub use crate::core::merge::Merge;
pub use crate::core::merge::Mean;
pub use crate::core::merge::WeightedMean;
pub use crate::core::merge::MaxPool;
pub use crate::core::config::ArmsConfig;
pub use crate::ports::Place;
pub use crate::ports::Near;
pub use crate::ports::Latency;
pub use crate::engine::Arms;

Modules§

adapters
Adapter implementations - swappable components Contains: storage, index, python submodules
core
Core domain - pure math, no I/O Contains: Point, Id, Blob, Proximity trait, Merge trait
engine
Engine - orchestration layer Contains: Arms main struct
ports
Port definitions - trait contracts for adapters Contains: Place trait, Near trait, Latency trait