A production-grade agent platform: an autonomous coding agent (29 tools, 8 model providers, permission gates, checkpoint/resume) plus conversation memory and document RAG with streamed, cited answers. Comparable to OpenAI Codex, Google Antigravity, and Claude Code's cloud harness. See Agent API Harness.
| Capability | What it does |
|---|---|
| Agent harness API | Autonomous coding agent over REST + SSE / WebSocket: 29 tools, permission gates, checkpoint/resume, sub-agents, 8 providers (OpenAI, OpenRouter, NVIDIA NIM, Gemini, xAI, OpenCode Zen, OmniRoute, Ollama). |
| Super memory | Every exchange is embedded into a vector store; durable user facts (preferences, projects) become a long-term profile. |
| Dynamic visual | The LLM can render animated canvas widgets in the answer stream — flowcharts, sorting demos, algorithm walkthroughs. |
| Document RAG | Upload PDFs, ask questions, get streamed answers with page-level citations. |
| Hybrid retrieval | Dense (pgvector) + sparse (Postgres FTS) fused with RRF, cross-encoder reranking, HyDE, multi-query expansion. |
| Agentic query router | Per-message routing between knowledge base, memory, live web, or direct chat. |
| User-owned keys | Plug in your own provider keys — encrypted at rest (AES-256-GCM), cached in Redis. |
flowchart LR
subgraph clients
web[Web / Next.js]
desktop[Tauri Desktop]
end
subgraph control
gateway[API Gateway / NestJS]
rag[RAG Service / FastAPI]
end
subgraph data
pg[(PostgreSQL + pgvector)]
redis[(Redis)]
minio[(MinIO / S3)]
end
subgraph ai
ollama[Ollama local]
openrouter[OpenRouter / NVIDIA NIM]
end
web -- HTTP/SSE --> gateway
desktop -- HTTP/SSE --> gateway
gateway -- query + SSE --> rag
rag --> pg
rag --> redis
gateway --> minio
rag --> ollama
rag --> openrouter
Build from source and install to /Applications in one command (needs node,
pnpm, and Xcode Command Line Tools):
./install.sh- installs workspace deps and shuts down any running instance
- rebuilds api-gateway + web UI, then the Rust release binary
- assembles
Smoke Monkey.appand copies it to/Applications
Run it with open "/Applications/Smoke Monkey Desktop.app". OmniRoute is not
bundled — the app self-installs it on first launch (look for
"Initializing OmniRoute…"). See
bundle-app.sh.
Requires Docker + Docker Compose (~8 GB free disk for local models):
cp .env.example .env # configure providers (or use local Ollama)
make up # build & start the full stack
docker compose logs -f ollama # wait for model pulls (first run)
make seed-user # demo account: demo@rag.local
make web # open http://localhost:3001Then: sign in > Knowledge Base > upload a PDF > wait for ready > Chat.
Answers stream in with sources.
| Service | URL |
|---|---|
| Web app | http://localhost:3001 |
| API gateway | http://localhost:3000 |
| rag-service | http://localhost:8000 |
| Ollama | http://localhost:11434 |
| Postgres | localhost:5432 |
Run the gateway standalone (SQLite, no Docker) for local development:
cd apps/api-gateway
DB_DRIVER=sqlite node dist/main.js # http://localhost:8642Skips Redis/NATS/MinIO automatically; SQLite lives at
~/.smokemonkey/smokemonkey.db; Ollama runs locally at :11434.
smoke-monkey-desktop/
├── apps/
│ ├── api-gateway/ NestJS — auth, uploads, chat SSE, agent, health
│ ├── rag-service/ FastAPI — query pipeline, retrieval, streaming
│ ├── document-worker/ async PDF ingestion (parse → chunk → embed → index)
│ ├── desktop/ Tauri desktop app wrapper
│ └── web/ Next.js — chat + documents + canvas renderer
├── packages/ shared TS contracts / config
├── infrastructure/ docker, k8s, helm, terraform
└── docs/ architecture + algorithm docs
| Variable | Default | Purpose |
|---|---|---|
LLM_PROVIDER |
openrouter |
ollama / openrouter / nvidia / gemini |
ROUTER_ENABLED |
true |
agentic query router |
MEMORY_ENABLED |
true |
conversation memory embeddings + fact extraction |
MEMORY_TOP_K |
5 |
memory hits injected into the answer prompt |
WEB_SEARCH_ENABLED |
false |
live web context (DuckDuckGo, no key) |
JWT_SECRET |
change-me-in-production |
set a real secret |
DB_DRIVER |
sqlite |
sqlite (desktop) or postgres (Docker) |
See .env.example. Never commit your .env.
See CONTRIBUTING.md for the workflow, code standards, and secret-handling policy.
Non-commercial. Licensed under the PolyForm Noncommercial License 1.0.0 — free for research, education, personal, and nonprofit use. Commercial use requires a separate license.
