Skip to main content

nexus-platform

The main monorepo. A Cargo workspace containing the Rust apps, the shared crates, and deploy manifests. The admin UI lives in its own repo, nexus-ui.

Cargo workspace

[workspace]
members = [
"apps/nexus-core",
"apps/nexus-worker",
"apps/nexus-agent-runner",
"apps/nexus-telegram",
"crates/nexus-domain",
"crates/nexus-db",
"crates/nexus-events",
"crates/nexus-board",
"crates/nexus-board-plane",
"crates/nexus-agent-runtime",
"crates/nexus-ai-runtime",
"crates/nexus-memory",
"crates/nexus-skills",
"crates/nexus-llm",
"crates/nexus-git",
"crates/nexus-k8s",
"crates/nexus-auth",
"crates/nexus-observability"
]
resolver = "2"

The admin console is not in this repo — it is the standalone nexus-ui Next.js app, which talks to nexus-core over REST.

Apps

AppRoleKey libraries
nexus-coreHTTP API + orchestrationaxum, tokio, tower, tower-http, serde, anyhow, thiserror, tracing, utoipa, jsonwebtoken, argon2, validator
nexus-workerBackground scheduling/synctokio, async-nats, mongodb, serde, tracing, cron, backoff, futures
nexus-agent-runnerGeneric runtime in K8s Jobstokio, reqwest, serde, schemars, tracing, async-trait, clap, duct, tempfile, ignore, walkdir, similar
nexus-telegramCommand gatewayteloxide, tokio, serde, tracing, reqwest

Shared crates

CrateRoleKey libraries
nexus-domainPure domain types (zero DB/HTTP)serde, schemars, uuid, chrono, strum, validator
nexus-dbMongoDB repository layermongodb, bson, serde, futures, thiserror, tracing
nexus-eventsInternal event busasync-nats, serde, tokio, tracing
nexus-boardGeneric board abstraction (trait)async-trait, serde, thiserror, anyhow
nexus-board-planePlane implementationreqwest, serde, async-trait, governor, tracing, hmac, sha2
nexus-agent-runtimeAgent execution abstraction (trait)async-trait, serde, tokio, thiserror
nexus-ai-runtimeProvider-adapter library: AgentBackend trait + API/CLI backendsgenai, reqwest, tokio, schemars, serde, async-trait
nexus-k8sKubernetes runtime implkube, k8s-openapi, serde, tokio, futures, tracing
nexus-skillsSkill registryserde, serde_yaml, pulldown-cmark, schemars, jsonschema, semver
nexus-memoryMemory systemmongodb, serde, regex, rust-stemmers (opt), reqwest (opt, embeddings)
nexus-llmLLM provider abstractionreqwest, serde, async-trait, tokio, backoff, tiktoken-rs (opt)
nexus-gitGit / PR operationsgit2 or gix, reqwest, octocrab (opt), duct, tempfile
nexus-authAuth + permissionsjsonwebtoken, argon2, rand, serde, axum-extra, tower-http
nexus-observabilityMetrics, logs, tracestracing, tracing-subscriber, opentelemetry, opentelemetry-otlp, metrics, metrics-exporter-prometheus

See Technical: crates for the trait definitions and the rationale behind each boundary.

Why a workspace, not many repos

A workspace gives clean crate boundaries without Git-repo chaos: shared types in nexus-domain, one place to bump dependencies, atomic cross-crate changes. Split a crate into its own repo only when it needs an independent release cadence.