2 unstable releases
| 0.2.0 | Mar 24, 2026 |
|---|---|
| 0.1.0 | Mar 10, 2026 |
#672 in Artificial intelligence
25KB
435 lines
slickit
Semantic, LLM-Interpretable Component Kit. Foundation types for composable components.
What
Three types that let components be discovered, composed, and instantiated across languages:
Manifest— structural surface (type_url, source, requires, provides, relations)TypedStruct— typed data envelope (type_url + opaque JSON value)TypedRegistry— type_url → factory → instance
MSG framework: Manifest = Mechanics. Skills = Semantics. Governance = external.
Install
# Rust
cargo add slickit --features manifest
# Python
pip install slickit
# TypeScript (npm publish pending)
bun add slickit
Usage
Rust
use slick::{Manifest, TypedStruct, TypedRegistryBuilder};
use std::collections::HashMap;
// Describe a component
let manifest = Manifest {
type_url: "cix.commands.v1.Recon".into(),
source: "git+https://github.com/mox-labs/tools/recon".into(),
requires: vec!["cix.v1.Target".into()],
provides: vec!["cix.v1.ReconReport".into()],
relations: HashMap::from([
("skills".into(), vec!["git+https://github.com/mox-labs/skills/recon".into()]),
]),
};
// Register and instantiate
let registry = TypedRegistryBuilder::<String, String>::new()
.register("example.v1", |value| {
serde_json::from_value::<String>(value.clone())
.map_err(|e| e.to_string())
})
.build();
let instance = registry.create("example.v1", &serde_json::json!("hello")).unwrap();
Python
from slickit import Manifest, TypedStruct
manifest = Manifest(
type_url="cix.commands.v1.Recon",
source="git+https://github.com/mox-labs/tools/recon",
requires=["cix.v1.Target"],
provides=["cix.v1.ReconReport"],
relations={"skills": ["git+https://github.com/mox-labs/skills/recon"]},
)
json_str = manifest.to_json()
manifest2 = Manifest.from_json(json_str)
TypeScript
import { Manifest } from "slickit";
const manifest = Manifest.fromObject({
type_url: "cix.commands.v1.Recon",
source: "git+https://github.com/mox-labs/tools/recon",
requires: ["cix.v1.Target"],
provides: ["cix.v1.ReconReport"],
relations: { skills: ["git+https://github.com/mox-labs/skills/recon"] },
});
console.log(manifest.typeUrl); // "cix.commands.v1.Recon"
Manifest
Five fields. Pure structure.
type_url: cix.commands.v1.Recon
source: git+https://github.com/mox-labs/tools/recon
requires: [cix.v1.Target]
provides: [cix.v1.ReconReport]
relations:
skills: [git+https://github.com/mox-labs/skills/recon]
tested_with: [cix.flows.v1.ReconPipeline]
- type_url — globally unique identity (namespace convention for kind)
- source — where it lives (git URL, local path)
- requires — input port declarations
- provides — output port declarations
- relations — extensible typed edges (skills, tested_with, replaces, etc.)
Dependencies
serde + serde_json. Nothing else.
License
Apache-2.0 — see LICENSE.
Dependencies
~0.4–1.3MB
~28K SLoC