Skip to content

Repository files navigation

NOVA

NOVA - Agent Builder Platform

NOVA is Fractics' secure, multi-tenant platform for building, deploying, and operating grounded AI agents across web, Hybrid RAG, commerce, Shopify, and support workflows.

The repository name remains agentbuilder for engineering purposes, but the product name is NOVA - Agent Builder Platform.

FastAPI React MongoDB TypeScript Python


About

NOVA is a context-aware conversational agent platform by Fractics. It helps teams build grounded AI assistants with hybrid search, evidence-aware answers, structured knowledge bases, memory, product catalogs, embeddable web chat, human takeover, and responsible AI observability.

Current Platform Capabilities

Area Current capability
Hybrid RAG Brand-scoped MongoDB Atlas or Qdrant retrieval, BM25, RRF fusion, reranking, evidence/citation contracts, and explicit no-evidence behavior.
Commerce and Shopify A canonical catalog contract, product/inventory visibility rules, Admin GraphQL catalogue sync, durable webhook processing, reconciliation, and Shopify MCP actions.
Vertical agents Controlled capability boundaries for generic, ecommerce, Shopify, and Lal Kitab agents; Lal Kitab connectors abstain deterministically when validated chart/source data is unavailable.
Multi-tenancy Tenant and brand authorization at API, retrieval, widget-session, WebSocket, and job boundaries.
Knowledge lifecycle Encrypted durable ingestion with leases, retries, idempotency, cancellation, deletion, re-indexing, upload limits, and archive-bomb controls.
Operations Rate-limit and takeover failure safety, non-root service images, security CI gates, SBOM/provenance controls, release documentation, and protected evaluation contracts.

Production Deployment Posture

NOVA's P0–P6 application controls are implemented in this repository. A broad external multi-tenant launch still requires the deployment owner to complete the environment-specific proof in the operations documentation: private Qdrant network placement, cloud workload identity and secret mounting, malware-scanner operation, real deployment smoke tests and recovery drills, the remote Strapi privacy-deletion contract, and staged human or pinned-model quality review.

See the GA Release and Operations Contract and Privacy Lifecycle before deploying outside a controlled environment.


Overview

NOVA helps teams create reliable AI agents with:

  • Multi-agent architecture for brand-specific and task-specific agents
  • Hybrid retrieval using MongoDB Atlas Vector Search or local Qdrant, BM25, RRF fusion, and reranking
  • Evidence-aware responses with versioned citations and explicit retrieval-degradation/no-evidence semantics
  • Session continuity and memory across conversations
  • Structured knowledge bases for products, dealers, FAQs, guides, and documents
  • Durable ingestion lifecycle with encryption, idempotency, leases/retries, cancellation, deletion, and re-index support
  • Embeddable web widget for deploying agents on external websites
  • Shopify Admin GraphQL and MCP bridge for catalog lifecycle and live commerce workflows
  • Tenant-bound human takeover for live conversations with signed widget and authenticated admin sessions
  • Lal Kitab safety controls with validated-source requirements and deterministic abstention
  • Responsible AI observability for rate limits, guardrails, fallbacks, hallucination signals, Strapi sync health, and latency
  • Secure data handling with JWT auth, admin API protection, rate limiting, PII handling, and production CORS controls

Architecture

Website visitor     -> apps/widget       -> apps/api
Admin user          -> apps/admin        -> apps/api
Shopify tools       -> apps/shopify-mcp  -> apps/api / Shopify

apps/api -> MongoDB         # documents, agents, memory, knowledge source of truth
apps/api -> Qdrant          # local/self-hosted vector search when VECTOR_BACKEND=qdrant
apps/api -> Redis           # cache, rate limits, jobs, pub/sub, live handoff
apps/api -> LLM providers   # OpenAI, Azure OpenAI, Qwen
apps/api -> Voyage AI       # embeddings
apps/api -> Strapi          # conversation/session sync, when configured

Core services:

Service Path Default URL Role
API apps/api http://localhost:8000 FastAPI backend, chat runtime, retrieval, observability
Admin apps/admin http://localhost:3000 NOVA dashboard for brands, agents, settings, KB, observability
Widget apps/widget http://localhost:5174 Embeddable chat widget
Shopify MCP apps/shopify-mcp http://localhost:3005 Shopify OAuth and MCP bridge
Ingestion worker apps/api image internal Mongo-leased encrypted knowledge ingestion, retry, cancellation, deletion, and re-index jobs
Catalog sync worker apps/api/app/workers/catalog_sync_worker.py internal Mongo-leased Shopify full sync, delete, and uninstall lifecycle work
Privacy retention worker apps/api image internal Enforces first-party retention policies across brand data
Strapi privacy worker apps/api image internal Processes the separately deployed, signed Strapi privacy-deletion contract when enabled
MongoDB Compose service internal Agent data, knowledge, memory, source of truth
Qdrant Compose-only internal service not host-published Local/self-hosted vector search; requires an API key
Redis Compose service internal Rate limits, jobs, pub/sub, session state

The API image is built from the repository root so it installs the same canonical packages/ source used in development and CI. There is no API-local copy of these packages; changes belong in the root tree. The admin, widget, and Shopify MCP services retain independent build contexts.


Project Structure

agentbuilder/
├── apps/
│   ├── api/             # FastAPI backend and agent runtime service
│   ├── admin/           # React admin dashboard
│   ├── widget/          # React embeddable web widget
│   └── shopify-mcp/     # Shopify MCP bridge
├── packages/
│   ├── agent_runtime/   # Agent orchestration
│   ├── commons/         # Shared types/utilities
│   ├── llm/             # LLM provider adapters
│   ├── memory/          # Memory managers and processors
│   ├── retrieval/       # Hybrid retrieval pipeline
│   └── tools/           # Tool registry and built-in tools
├── scripts/             # Operational setup/verification scripts
├── docs/                # Current architecture and production guides
├── docker-compose.yml   # Local full-stack runtime
├── AGENTS.md            # Coding-agent instructions
└── README.md            # This file

packages/ is the single source of truth for shared Python packages. The legacy apps/api/packages/ copies are excluded from image builds and must not be used for runtime changes.


Quick Start

1. Configure Environment

Create .env.docker in the repository root.

Minimum local values:

# Configure one supported inference provider (OpenAI or Azure OpenAI).
OPENAI_API_KEY=sk-...
VOYAGE_API_KEY=pa-...
VOYAGE_BASE_URL=https://api.voyageai.com/v1
SECRET_KEY=<openssl rand -hex 32>
PII_ENCRYPTION_KEY=<openssl rand -hex 32>
SETTINGS_ENCRYPTION_KEY=<openssl rand -hex 32>
ADMIN_API_KEY=<openssl rand -hex 32>
SESSION_SECRET=<openssl rand -hex 32>
MCP_SERVICE_AUTH_TOKEN=<openssl rand -hex 32>
STRAPI_PRIVACY_SUBJECT_HMAC_KEY=<openssl rand -hex 32>
MONGODB_URI=mongodb://mongodb:27017
REDIS_URL=redis://redis:6379
VECTOR_BACKEND=qdrant
QDRANT_URL=http://qdrant:6333
QDRANT_API_KEY=<openssl rand -hex 32>
CORS_ALLOW_ORIGINS=http://localhost:3000,http://localhost:5174
# Local Compose only. Production requires the environment-specific controls
# described in docs/operations/GA_RELEASE_OPERATIONS.md.
ENVIRONMENT=development
DEBUG=false
USE_AZURE_KEYVAULT=false
MALWARE_SCAN_MODE=disabled
STRAPI_PRIVACY_MODE=contract_pending
ALLOW_ADMIN_KEY_BYPASS=false

Use VOYAGE_BASE_URL=https://ai.mongodb.com/v1 when the key is a MongoDB Atlas Model API key.

Optional integrations:

STRAPI_URL=http://host.docker.internal:1337
STRAPI_API_TOKEN=...
SHOPIFY_CLIENT_ID=...
SHOPIFY_CLIENT_SECRET=...
SHOPIFY_WEBHOOK_SECRET=...
FIRECRAWL_API_KEY=...

2. Build And Run

docker compose --env-file .env.docker up -d --build

3. Verify

curl http://localhost:8000/live
curl http://localhost:8000/health
curl http://localhost:8000/ready
curl http://localhost:3005/health

Open:

--env-file .env.docker is required because Compose uses the Qdrant API key during service interpolation. The file is local-only and must never be committed. See .env.docker.example for the complete supported configuration.


Local Development

Run each service directly when you want fast iteration:

cd apps/api && python run.py
cd apps/admin && npm start
cd apps/widget && npm run dev
cd apps/shopify-mcp && npm start

Widget runs on port 5174.

For Docker deployments, admin and widget runtime URLs are injected through generated runtime-config.js files at container startup. This keeps browser-safe runtime config separate from secrets and avoids rebuilding frontend images just to change API origins.


Embedding A NOVA Agent

The widget can be embedded on an external website with the generated agent snippet from the NOVA admin dashboard.

Typical shape:

<script
  src="https://your-widget-domain/embed.js"
  data-agent-id="your-agent-id"
  data-api-url="https://your-api-domain"
  async
></script>

For local testing, use the widget service at http://localhost:5174.


Knowledge And Retrieval

NOVA supports structured and unstructured knowledge sources:

  • Products
  • Dealers
  • FAQs
  • Office locations
  • Categories
  • Guides and documents

Retrieval combines:

  • MongoDB Atlas Vector Search
  • BM25 keyword search
  • Reciprocal Rank Fusion
  • Reranking
  • Content-type and brand-aware boosts
  • Groundedness and source-validation checks

For MongoDB Atlas Vector Search, create a vector index on the knowledge_base collection with:

  • index name: vector_index
  • vector field: embeddings
  • dimensions: 1024
  • similarity: cosine
  • useful filters: agent_id, brand_id, brand_slug, doc_id, content_type

Responsible AI Operations

NOVA includes operational controls for enterprise-grade agents:

  • Rate limiting by policy, brand, agent, IP/user, and conversation
  • Guardrail tracking by action and reason
  • Fallback tracking by stage and reason
  • Hallucination-management signals such as groundedness and low-confidence responses
  • Strapi sync health by operation and status
  • Message latency by mode and status
  • Low-cardinality Prometheus metrics
  • Dashboard-level observability in the admin app

Testing

Run service-specific tests from each app/package.

API:

cd apps/api
pytest tests/

Admin:

cd apps/admin
npm test

Widget:

cd apps/widget
npm test

Full container build:

docker compose --env-file .env.docker build api admin widget shopify catalog-sync-worker

Deployment Notes

Recommended Azure layout:

  • API: Azure Container Apps or App Service for Containers
  • Admin: Azure Static Web Apps, App Service, or containerized nginx
  • Widget: Azure Static Web Apps, Storage Static Website + CDN, or containerized nginx
  • Shopify MCP: separate Azure Container App or App Service for Containers
  • MongoDB: MongoDB Atlas
  • Local/self-hosted vector search: Qdrant
  • Redis: Azure Cache for Redis
  • Secrets: Azure Key Vault
  • Edge/TLS: Azure Front Door or Application Gateway

For independent Azure container deployments, configure each service through Azure Container Apps/App Service environment variables or Key Vault references. Root .env.docker is only for local Docker Compose and should not be required by deployed service containers.

Keep Strapi deployed separately from this repository. Strapi is expected to run from the agentbuilder-strapi repository.


Documentation

Current docs:


License And Ownership

NOVA is built and owned by Fractics (fractics.com).

The code is released under the GNU Affero General Public License v3.0 or later. You can self-deploy, use, study, modify, and share NOVA under the terms of the AGPL.

The NOVA and Fractics names, logos, product identity, and brand assets remain owned by Fractics. The AGPL covers the code; it does not grant trademark rights or permission to present a hosted, managed, white-label, or commercial resale offering as the official NOVA product.

For commercial hosting, managed services, white-label use, resale, or brand permissions, contact Fractics. See TRADEMARKS.md.


Contributors


Product Positioning

Public product name:

NOVA - Agent Builder Platform

Internal engineering name:

agentbuilder

Suggested short description:

NOVA is a context-aware conversational agent platform that helps brands deploy grounded AI assistants with hybrid search, memory, product catalogs, human takeover, and responsible AI observability.


Built by Fractics for reliable, grounded, context-aware AI agents.

Built by Fractics

About

NOVA by Fractics — secure, multi-tenant platform for grounded Hybrid RAG, ecommerce, Shopify, Lal Kitab, and support agents.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages