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-taiga",
"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/sync and the HARVEST execution layer: the five accum-* jobs (analysis, dream, decision, execute, fallback), the executor sweep that carries the desk's decision JSON out through nexus-solana within mechanical caps, treasury hygiene (recall/rotate/repark, decided reserves), the Telegram approval pages and cycle-health watchdogs — see HARVEST — as builttokio, async-nats, mongodb, serde, tracing, cron, backoff, futures, reqwest, kube
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

The workspace has grown well past this table: nexus-mob-host (the meerkat desk host; /health fails on degraded cycles so Kubernetes restarts it), nexus-oracle, nexus-executor (retired perp executor), nexus-knowledge-mcp, and crates such as nexus-meerkat-host (flow capture, cycle health, panel coverage), nexus-jobs, nexus-mob-registry, nexus-mobpack, nexus-langfuse, nexus-tools and the nexus-trading-* family. The authoritative list is the workspace Cargo.toml.

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-taigaTaiga implementationreqwest, serde, async-trait, governor, tracing, hmac, sha1
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 (Prometheus /metrics on :9100), structured logs (stdout JSON + NATS capture)tracing, tracing-subscriber, prometheus, tokio — no OpenTelemetry

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.