Autonomous AI Engineering Platform — Multi-agent ADR pipeline with TUI, Web Console, and Desktop app
Version: 0.0.1 · Status: Release candidate · ROADMAP
The core product is implemented, but a public production release still depends on the environment-backed gates listed below. “Release candidate” is intentional: it does not imply that the soak period, cross-platform installers, or compliance audit have been completed.
Neoland is the orchestration layer that wires a local AI stack together. It exposes a unified REST/gRPC API, runs a four-stage DSPy multi-agent pipeline (Junior → Senior → Architect → TechLeader), and surfaces everything through three interfaces: TUI (ratatui), Web Console (Leptos WASM), and CLI.
TUI — 3-column layout (Sessions / Conversation / Reasoning), 4 themes, chat bubbles, pipeline tree with confidence badges:
│ Neoland │ │ local │ 0ms 817d82 Conversation │
│──────────────────────────────────────────────────────────────────────────────────│
│╭ Sessions ──────────────╮╭ Conversation ──────────────────╮╭ Reasoning ──────╮│
││ ✚ New Chat ^n ││ Neoland ││ Refatorar módulo ││
││ ⠋ Refatorar módulo… ││ ╭──────────────────────────────╮││ ├─ Root [92%] ││
││ agora ││ │ Claro! Sugiro multiprocessing│││ ├─ Echo [88%] ││
││ ● Revisar pipeline… ││ │ from multiprocessing import │││ ├─ ⠋ Lyra 0.0s ││
││ 18m ││ │ Pool │││ ╰─ ADR accepted ││
││ ● Otimizar query db ││ ╰──────────────────────────────╯│╰─────────────────────╯│
│╰──────────────────────────╯╰────────────────────────────────╯ │
│ ╭────────────────────────────────────────────────────────────────────────────╮ │
│ │ L local │ balanced │ Aguardando intervenção (Steer)... │ │
│ ╰────────────────────────────────────────────────────────────────────────────╯ │
Web Console — Leptos WASM SPA, same 3-panel layout, CSS artesanal zero deps:
┌─ Topbar ──────────────────────────────────────────────────────────────────────────┐
│ [☰ Sessions] NEOLAND://CORE [⚙ Reasoning] │
├─ Workspace ───────────────────────────────────────────────────────────────────────┤
│ ┌ Sessions ────────┐ ┌ Conversation ───────────────────────┐ ┌ Reasoning ────────┐ │
│ │ [+ New Chat] │ │ │ │ Pipeline Tree │ │
│ │ │ │ Neoland │ │ ├─ Junior [92%] │ │
│ │ ● Session 1 5m │ │ ╭────────────────────────────────╮│ │ ├─ Senior [88%] │ │
│ │ ● Session 2 1h │ │ │ Response streaming via SSE... ││ │ ├─ Architect ⠋ │ │
│ │ ○ Session 3 1d │ │ ╰────────────────────────────────╯│ │ ╰─ ADR accepted │ │
│ └──────────────────┘ └────────────────────────────────────┘ └────────────────────┘ │
├─ Composer ────────────────────────────────────────────────────────────────────────┤
│ [Input box] [Submit ▶] │
└────────────────────────────────────────────────────────────────────────────────────┘
Nota: screenshots reais (PNG) podem ser capturadas com
just screenshotquando o ambiente estiver rodando localmente.
┌───────────────┐ ┌──────────────┐ ┌──────────────────┐
│ Terminal │ │ Browser │ │ Desktop (Tauri) │
│ TUI (Rust) │ │ Leptos SPA │ │ (v0.0.1+) │
└───────┬───────┘ └──────┬───────┘ └────────┬─────────┘
│ │ │
└────────┬────────┴────────────────────┘
│ REST :3001 / gRPC :50051
┌───────▼───────────┐
│ Neoland Control │
│ Plane (Rust) │
└───────┬───────────┘
│ HTTP
┌───────▼───────────┐
│ SecureLLM Bridge │ :8080 (mTLS · PII redact)
└───────┬───────────┘
│ HTTP
┌───────▼───────────┐
│ ml-ops-api │ :8083 (VRAM-aware routing)
└───────┬───────────┘
│ HTTP
┌───────▼───────────┐
│ Inference │ llama.cpp :8081 / vLLM (opt)
└───────────────────┘
DSPy Pipeline :8001 (Python · FastAPI)
ADR Ledger Merkle chain · secp256k1 · NATS JetStream
| Surface | Stack | Status |
|---|---|---|
| TUI | Rust + ratatui · 4 themes · chat bubbles · pipeline tree | ✅ Stable |
| Web Console | Leptos WASM + CSS artesanal · 3-panel SPA · SSE streaming | ✅ Honest Preview |
| Desktop | Tauri + Leptos (reuses WASM bundle) | ✅ v0.0.1 |
| CLI / API | Rust + axum + tonic · 15 REST endpoints + gRPC | ✅ Stable |
| Gate | Result | Evidence |
|---|---|---|
| Rust workspace tests | ✅ 301 core passed, 18 ignored; 16 web passed | cargo test --workspace --lib |
| Clippy (all targets) | ✅ 0 warnings | cargo clippy --all-targets -- -D warnings |
| Clippy (WASM) | ✅ 0 warnings | cargo clippy -p neoland-web --target wasm32-unknown-unknown |
| Web Console tests | ✅ 16/16 passed | cargo test -p neoland-web |
| E2E REST tests | ✅ 22/22 passed | cargo test --test rest_api_test |
| Python contracts | ✅ 26/26 passed | pytest -m contract |
| WASM compilation | ✅ Clean | cargo check -p neoland-web --target wasm32-unknown-unknown |
| Doctor | ✅ ok: true | just doctor |
| Docker Compose syntax | ✅ Valid | docker compose config --quiet |
| Full-stack smoke | ⏳ Requires local services + LLM credentials | just smoke |
| Helm render/lint | ⏳ Requires Kubernetes Helm CLI | helm lint deploy/helm/neoland |
| Native desktop installers | ⏳ Not yet produced in CI | just desktop-build |
neoland database# One-time: create the database
psql -c "CREATE DATABASE neoland;"
git clone <this-repo> && cd neoland
nix develop
# Start server + TUI together
just dev
# Or individual:
just server # REST :3001 + gRPC :50051
just tui # TUI client (in another terminal)
# Single command: server + Web Console on :8080 with Trunk proxy
just dev-web
# Open http://localhost:8080 in your browser
cd deploy/docker/
cp .env.example .env && $EDITOR .env # set LLM_API_KEY
eval $(ssh-agent) && ssh-add ~/.ssh/id_ed25519
DOCKER_BUILDKIT=1 docker compose build --ssh default
docker compose up -d
curl http://localhost:3001/health | jq .
Local development defaults are not production defaults. Before deploying with Docker or Helm:
NEOLAND_ADMIN_API_KEY, NEOLAND_USER_API_KEY, and
NEOLAND_READONLY_API_KEY values; never reuse the examples.NEOLAND_JWT_SECRET, database credentials, and provider credentials through
a secret manager or the platform's secret mechanism.migrations/ in numeric order.NEOLAND_REQUIRE_VAULT_KEYS=1; startup must reject development keys./live for liveness and /ready for readiness.just validate-all, then the environment-backed just smoke before traffic.scripts/backup/README.md and
docs/runbooks/neoland-disaster-recovery.md.The supported deployment paths are the Nix release artifact
(nix build .#neoland-full), Docker Compose for a single host, and the Helm chart
under deploy/helm/neoland/. The Ubuntu bare-metal build path is documented in
docs/neoland-quickstart.md, but is not yet an
audited production path.
neoland server # gRPC :50051 + REST :3001
neoland client # TUI terminal client
neoland doctor # environment diagnostics (--json for machine output)
neoland test # health checks
neoland restart # kill + restart server
Running neoland without a subcommand starts the server. The concrete entrypoints
are src/bin/neoland.rs (Rust CLI), deploy/docker/entrypoint.sh (container),
agents/neoland_agents/app.py (DSPy/FastAPI), and web/src/main.rs (Web Console).
Runtime endpoint variables are intentionally separate:
| Boundary | Variable | Default |
|---|---|---|
| REST control plane | NEOLAND_SERVER_URL | http://localhost:3001 |
| gRPC control plane | NEOLAND_GRPC_URL | http://localhost:50051 |
| DSPy pipeline | NEOLAND_DSPY_URL | http://localhost:8001 |
| LLM gateway | NEOLAND_GATEWAY_URL | http://localhost:8080 |
| PostgreSQL | DATABASE_URL | environment-specific |
Aliases set by nix develop: nsrv (server), ncli (client), nd (doctor), nt (test).
src/
├── bin/neoland.rs CLI entrypoint
├── server/mod.rs REST + gRPC handlers · security middleware
├── agents/ DSPy pipeline client, orchestrator, sessions, escalation
├── mcp/ Native MCP server (breakpoints + tool routing)
├── tools/ NativeTool trait + ShellTool
├── auth.rs API key auth · RBAC (Admin / User / ReadOnly)
├── secrets.rs Vault → SOPS → env fallback
├── audit.rs Structured JSON audit · brute-force detection
├── validation.rs Input sanitization · path traversal prevention
├── tui/ ratatui TUI · 4 themes · SSE subscriber
└── storage/ PostgreSQL + pgvector
agents/neoland_agents/
├── app.py FastAPI · /health · /v1/pipeline/run · /v1/pipeline/session/{id}
├── signatures/ DSPy contracts (4 agents)
├── modules/ Junior · Senior · Architect · TechLeader
├── pipeline/ Orchestrator · checkpoint persistence
└── schemas/api.py Pydantic ↔ Rust mirror types
web/
├── src/
│ ├── main.rs App component · signal-based state
│ ├── api.rs REST + SSE client (gloo-net + EventSource)
│ ├── model.rs Message data model
│ ├── lib.rs Crate root + unit tests (16 tests)
│ └── components/ 5 Leptos components
│ ├── composer.rs Input box + submit
│ ├── conversation.rs Chat messages + streaming
│ ├── reasoning.rs Pipeline reasoning panel
│ ├── sessions.rs Session list sidebar
│ └── topbar.rs Header bar
├── public/neoland.css ~600 lines · zero dependencies
├── Trunk.toml Proxy config for dev
└── Cargo.toml Workspace member
# Rust — all crates
cargo test --workspace
# Web Console only
cargo test -p neoland-web
# Python — no LLM needed
cd agents && poetry run pytest tests/ -m contract -v
# Python — requires LLM_API_KEY
cd agents && poetry run pytest tests/ -m integration -v
# WASM compilation check
cargo check -p neoland-web --target wasm32-unknown-unknown
# SLO validation (requires running server)
just validate-slo
X-API-Key headerdocs/ADR/ for full security decisions| Metric | Value |
|---|---|
| TUI startup | <50ms |
| Memory (TUI) | ~15MB |
| Memory (server, idle) | ~200MB |
/live | 37,600 RPS · p99 12ms |
/health | 258 RPS · p99 309ms (IO-bound) |
| Qwen 1.8B CPU | 5–10 tok/s (dev fallback) |
| Build time (release) | ~10s |
imports = [ ./modules/applications/neoland.nix ];
services.neoland = {
enable = true;
openFirewall = true;
environmentFile = "/run/secrets/neoland.env";
};
Nix flake provides:
nix build .#neoland — control plane binarynix build .#neoland-web — Web Console WASM bundle (requires network for first build)nix build .#neoland-full — full stack: control plane + Web Console served by a single binary (neoland-full)nix develop — dev shell with all tooling (Rust, trunk, Python, SOPS, NATS, etc.)neoland · securellmBridgeApi · mlOpsApi · llmSuite · stackCREATE EXTENSION vector for persistenceOPENAI_API_KEY (or equivalent litellm key)nix build .#neoland-web requires network on first run (cargo deps); cached thereafterROADMAP.md — release roadmap and delivery logdocs/neoland-architecture.md — architecture overviewdocs/neoland-quickstart.md — setup and first rundocs/neoland-sops-setup.md — secrets workflowdocs/ADR/ — architectural decisions (016+)docs/runbooks/ — operations runbooksApache 2.0
Maintained by: VoidNxSEC Team
Last validated: 2026-08-02 · PR #10 release gate passed Rust, Python contracts,
Web/WASM, Docker/Helm, TLS/mTLS and Nix output checks; real-LLM full-stack,
authenticated TUI, independent quickstart and public-release gates remain in the roadmap
Rust
67.8%
Shell
17.0%
Python
5.3%
Nix
5.1%
CSS
1.3%
HTML
1.2%
Autonomous AI Engineering Platform — Multi-agent ADR pipeline with TUI, Web Console, and Desktop app
Version: 0.0.1 · Status: Release candidate · ROADMAP
The core product is implemented, but a public production release still depends on the environment-backed gates listed below. “Release candidate” is intentional: it does not imply that the soak period, cross-platform installers, or compliance audit have been completed.
Neoland is the orchestration layer that wires a local AI stack together. It exposes a unified REST/gRPC API, runs a four-stage DSPy multi-agent pipeline (Junior → Senior → Architect → TechLeader), and surfaces everything through three interfaces: TUI (ratatui), Web Console (Leptos WASM), and CLI.
TUI — 3-column layout (Sessions / Conversation / Reasoning), 4 themes, chat bubbles, pipeline tree with confidence badges:
│ Neoland │ │ local │ 0ms 817d82 Conversation │
│──────────────────────────────────────────────────────────────────────────────────│
│╭ Sessions ──────────────╮╭ Conversation ──────────────────╮╭ Reasoning ──────╮│
││ ✚ New Chat ^n ││ Neoland ││ Refatorar módulo ││
││ ⠋ Refatorar módulo… ││ ╭──────────────────────────────╮││ ├─ Root [92%] ││
││ agora ││ │ Claro! Sugiro multiprocessing│││ ├─ Echo [88%] ││
││ ● Revisar pipeline… ││ │ from multiprocessing import │││ ├─ ⠋ Lyra 0.0s ││
││ 18m ││ │ Pool │││ ╰─ ADR accepted ││
││ ● Otimizar query db ││ ╰──────────────────────────────╯│╰─────────────────────╯│
│╰──────────────────────────╯╰────────────────────────────────╯ │
│ ╭────────────────────────────────────────────────────────────────────────────╮ │
│ │ L local │ balanced │ Aguardando intervenção (Steer)... │ │
│ ╰────────────────────────────────────────────────────────────────────────────╯ │
Web Console — Leptos WASM SPA, same 3-panel layout, CSS artesanal zero deps:
┌─ Topbar ──────────────────────────────────────────────────────────────────────────┐
│ [☰ Sessions] NEOLAND://CORE [⚙ Reasoning] │
├─ Workspace ───────────────────────────────────────────────────────────────────────┤
│ ┌ Sessions ────────┐ ┌ Conversation ───────────────────────┐ ┌ Reasoning ────────┐ │
│ │ [+ New Chat] │ │ │ │ Pipeline Tree │ │
│ │ │ │ Neoland │ │ ├─ Junior [92%] │ │
│ │ ● Session 1 5m │ │ ╭────────────────────────────────╮│ │ ├─ Senior [88%] │ │
│ │ ● Session 2 1h │ │ │ Response streaming via SSE... ││ │ ├─ Architect ⠋ │ │
│ │ ○ Session 3 1d │ │ ╰────────────────────────────────╯│ │ ╰─ ADR accepted │ │
│ └──────────────────┘ └────────────────────────────────────┘ └────────────────────┘ │
├─ Composer ────────────────────────────────────────────────────────────────────────┤
│ [Input box] [Submit ▶] │
└────────────────────────────────────────────────────────────────────────────────────┘
Nota: screenshots reais (PNG) podem ser capturadas com
just screenshotquando o ambiente estiver rodando localmente.
┌───────────────┐ ┌──────────────┐ ┌──────────────────┐
│ Terminal │ │ Browser │ │ Desktop (Tauri) │
│ TUI (Rust) │ │ Leptos SPA │ │ (v0.0.1+) │
└───────┬───────┘ └──────┬───────┘ └────────┬─────────┘
│ │ │
└────────┬────────┴────────────────────┘
│ REST :3001 / gRPC :50051
┌───────▼───────────┐
│ Neoland Control │
│ Plane (Rust) │
└───────┬───────────┘
│ HTTP
┌───────▼───────────┐
│ SecureLLM Bridge │ :8080 (mTLS · PII redact)
└───────┬───────────┘
│ HTTP
┌───────▼───────────┐
│ ml-ops-api │ :8083 (VRAM-aware routing)
└───────┬───────────┘
│ HTTP
┌───────▼───────────┐
│ Inference │ llama.cpp :8081 / vLLM (opt)
└───────────────────┘
DSPy Pipeline :8001 (Python · FastAPI)
ADR Ledger Merkle chain · secp256k1 · NATS JetStream
| Surface | Stack | Status |
|---|---|---|
| TUI | Rust + ratatui · 4 themes · chat bubbles · pipeline tree | ✅ Stable |
| Web Console | Leptos WASM + CSS artesanal · 3-panel SPA · SSE streaming | ✅ Honest Preview |
| Desktop | Tauri + Leptos (reuses WASM bundle) | ✅ v0.0.1 |
| CLI / API | Rust + axum + tonic · 15 REST endpoints + gRPC | ✅ Stable |
| Gate | Result | Evidence |
|---|---|---|
| Rust workspace tests | ✅ 301 core passed, 18 ignored; 16 web passed | cargo test --workspace --lib |
| Clippy (all targets) | ✅ 0 warnings | cargo clippy --all-targets -- -D warnings |
| Clippy (WASM) | ✅ 0 warnings | cargo clippy -p neoland-web --target wasm32-unknown-unknown |
| Web Console tests | ✅ 16/16 passed | cargo test -p neoland-web |
| E2E REST tests | ✅ 22/22 passed | cargo test --test rest_api_test |
| Python contracts | ✅ 26/26 passed | pytest -m contract |
| WASM compilation | ✅ Clean | cargo check -p neoland-web --target wasm32-unknown-unknown |
| Doctor | ✅ ok: true | just doctor |
| Docker Compose syntax | ✅ Valid | docker compose config --quiet |
| Full-stack smoke | ⏳ Requires local services + LLM credentials | just smoke |
| Helm render/lint | ⏳ Requires Kubernetes Helm CLI | helm lint deploy/helm/neoland |
| Native desktop installers | ⏳ Not yet produced in CI | just desktop-build |
neoland database# One-time: create the database
psql -c "CREATE DATABASE neoland;"
git clone <this-repo> && cd neoland
nix develop
# Start server + TUI together
just dev
# Or individual:
just server # REST :3001 + gRPC :50051
just tui # TUI client (in another terminal)
# Single command: server + Web Console on :8080 with Trunk proxy
just dev-web
# Open http://localhost:8080 in your browser
cd deploy/docker/
cp .env.example .env && $EDITOR .env # set LLM_API_KEY
eval $(ssh-agent) && ssh-add ~/.ssh/id_ed25519
DOCKER_BUILDKIT=1 docker compose build --ssh default
docker compose up -d
curl http://localhost:3001/health | jq .
Local development defaults are not production defaults. Before deploying with Docker or Helm:
NEOLAND_ADMIN_API_KEY, NEOLAND_USER_API_KEY, and
NEOLAND_READONLY_API_KEY values; never reuse the examples.NEOLAND_JWT_SECRET, database credentials, and provider credentials through
a secret manager or the platform's secret mechanism.migrations/ in numeric order.NEOLAND_REQUIRE_VAULT_KEYS=1; startup must reject development keys./live for liveness and /ready for readiness.just validate-all, then the environment-backed just smoke before traffic.scripts/backup/README.md and
docs/runbooks/neoland-disaster-recovery.md.The supported deployment paths are the Nix release artifact
(nix build .#neoland-full), Docker Compose for a single host, and the Helm chart
under deploy/helm/neoland/. The Ubuntu bare-metal build path is documented in
docs/neoland-quickstart.md, but is not yet an
audited production path.
neoland server # gRPC :50051 + REST :3001
neoland client # TUI terminal client
neoland doctor # environment diagnostics (--json for machine output)
neoland test # health checks
neoland restart # kill + restart server
Running neoland without a subcommand starts the server. The concrete entrypoints
are src/bin/neoland.rs (Rust CLI), deploy/docker/entrypoint.sh (container),
agents/neoland_agents/app.py (DSPy/FastAPI), and web/src/main.rs (Web Console).
Runtime endpoint variables are intentionally separate:
| Boundary | Variable | Default |
|---|---|---|
| REST control plane | NEOLAND_SERVER_URL | http://localhost:3001 |
| gRPC control plane | NEOLAND_GRPC_URL | http://localhost:50051 |
| DSPy pipeline | NEOLAND_DSPY_URL | http://localhost:8001 |
| LLM gateway | NEOLAND_GATEWAY_URL | http://localhost:8080 |
| PostgreSQL | DATABASE_URL | environment-specific |
Aliases set by nix develop: nsrv (server), ncli (client), nd (doctor), nt (test).
src/
├── bin/neoland.rs CLI entrypoint
├── server/mod.rs REST + gRPC handlers · security middleware
├── agents/ DSPy pipeline client, orchestrator, sessions, escalation
├── mcp/ Native MCP server (breakpoints + tool routing)
├── tools/ NativeTool trait + ShellTool
├── auth.rs API key auth · RBAC (Admin / User / ReadOnly)
├── secrets.rs Vault → SOPS → env fallback
├── audit.rs Structured JSON audit · brute-force detection
├── validation.rs Input sanitization · path traversal prevention
├── tui/ ratatui TUI · 4 themes · SSE subscriber
└── storage/ PostgreSQL + pgvector
agents/neoland_agents/
├── app.py FastAPI · /health · /v1/pipeline/run · /v1/pipeline/session/{id}
├── signatures/ DSPy contracts (4 agents)
├── modules/ Junior · Senior · Architect · TechLeader
├── pipeline/ Orchestrator · checkpoint persistence
└── schemas/api.py Pydantic ↔ Rust mirror types
web/
├── src/
│ ├── main.rs App component · signal-based state
│ ├── api.rs REST + SSE client (gloo-net + EventSource)
│ ├── model.rs Message data model
│ ├── lib.rs Crate root + unit tests (16 tests)
│ └── components/ 5 Leptos components
│ ├── composer.rs Input box + submit
│ ├── conversation.rs Chat messages + streaming
│ ├── reasoning.rs Pipeline reasoning panel
│ ├── sessions.rs Session list sidebar
│ └── topbar.rs Header bar
├── public/neoland.css ~600 lines · zero dependencies
├── Trunk.toml Proxy config for dev
└── Cargo.toml Workspace member
# Rust — all crates
cargo test --workspace
# Web Console only
cargo test -p neoland-web
# Python — no LLM needed
cd agents && poetry run pytest tests/ -m contract -v
# Python — requires LLM_API_KEY
cd agents && poetry run pytest tests/ -m integration -v
# WASM compilation check
cargo check -p neoland-web --target wasm32-unknown-unknown
# SLO validation (requires running server)
just validate-slo
X-API-Key headerdocs/ADR/ for full security decisions| Metric | Value |
|---|---|
| TUI startup | <50ms |
| Memory (TUI) | ~15MB |
| Memory (server, idle) | ~200MB |
/live | 37,600 RPS · p99 12ms |
/health | 258 RPS · p99 309ms (IO-bound) |
| Qwen 1.8B CPU | 5–10 tok/s (dev fallback) |
| Build time (release) | ~10s |
imports = [ ./modules/applications/neoland.nix ];
services.neoland = {
enable = true;
openFirewall = true;
environmentFile = "/run/secrets/neoland.env";
};
Nix flake provides:
nix build .#neoland — control plane binarynix build .#neoland-web — Web Console WASM bundle (requires network for first build)nix build .#neoland-full — full stack: control plane + Web Console served by a single binary (neoland-full)nix develop — dev shell with all tooling (Rust, trunk, Python, SOPS, NATS, etc.)neoland · securellmBridgeApi · mlOpsApi · llmSuite · stackCREATE EXTENSION vector for persistenceOPENAI_API_KEY (or equivalent litellm key)nix build .#neoland-web requires network on first run (cargo deps); cached thereafterROADMAP.md — release roadmap and delivery logdocs/neoland-architecture.md — architecture overviewdocs/neoland-quickstart.md — setup and first rundocs/neoland-sops-setup.md — secrets workflowdocs/ADR/ — architectural decisions (016+)docs/runbooks/ — operations runbooksApache 2.0
Maintained by: VoidNxSEC Team
Last validated: 2026-08-02 · PR #10 release gate passed Rust, Python contracts,
Web/WASM, Docker/Helm, TLS/mTLS and Nix output checks; real-LLM full-stack,
authenticated TUI, independent quickstart and public-release gates remain in the roadmap
Rust
67.8%
Shell
17.0%
Python
5.3%
Nix
5.1%
CSS
1.3%
HTML
1.2%