Flux

Your data stays in.
Your AI agents stay ahead.

From documents, recordings, and images to search and AI agent execution — the entire pipeline runs on your own servers. A fully air-gapped knowledge platform with zero external API calls.

  • 15 file formats
  • 28-node builder → graph-engine compile
  • Docker, single server

Sign up and explore the demo instantly

Contract Review Agent
on-premise

What were the renewal terms in the Q3 supply contract?

The Q3 supply contract was renewed with a 3% unit price increase and delivery shortened to 30 days12

12025_Q3_supply_contract_renewal.pdfp.14
0.92
2procurement_meeting_0912.docxp.3
0.87
Ask about your documents
Product Tour

Your company's own AI, built from internal documents

Ingest → Retrieve → Build → Graph → Observe. All five stages happen inside the same boundary.

01

Upload it, we read it — From PDFs to meeting recordings

8 document + 5 image + 2 audio types — 15 formats through a single pipeline. Up to 1GB per file.

  • Meeting transcription

    Built-in Whisper (6 models, TURBO default) transcribes without an API key. Switch to 5 external STT providers — incomplete configs fall back to built-in Whisper automatically.

  • Auto image captions

    A Vision LLM writes 3–5 sentence captions for charts and diagrams — answering "where was that chart?". Indexing succeeds even if captioning fails.

  • Table structure recognition

    PDF tables are extracted with TableFormer structure recognition (fast/accurate modes), preserving rows and columns.

  • Operational reliability

    5-stage weighted progress with ETA, instant cancellation mid-processing (process isolation), 3 automatic retries then 7-day DLQ backup.

services/document — 19 MIME whitelist · DLQ 3 retries, backoff 1s→2s→4s

ingest queue · 4 files
PDFPPTXPNGMP3
0% · ~40s remaining
ParseChunkEmbedStore

Scanned original

Extracted text

OCRCaption generated800tok chunks
02

Semantic and keyword search, fused — every answer footnoted

Dense vectors and BM25 keywords searched simultaneously, fused with RRF, then rescored by a reranker. Every answer carries [N] footnotes.

Hybrid search

Dense vector + BM25 keyword search fused with RRF (k=60). All scores normalized to 0–1.

Local embeddings

Three Qwen3 embedding models (8B/4B/0.6B · 4096/2560/1024 dims) on local GPU — documents can stay in-house at indexing time. OpenAI and Cohere are also supported.

Two-stage precision

Three local Qwen3-Rerankers or Cohere Rerank v3.5 rescore results. If the reranker fails, original results are still returned.

Citation chain

[N] footnote → source card (page · score) → chunk text → in-app preview. Graph sources are marked [G]; SigLIP2 text-to-image search is built in.

Hybrid retrieval pipeline — dense + sparse, RRF fusion, rerankcontract renewal termsquerySemantic vectorsdense vectorMorpheme keywordsBM25 sparseRRF fusionRRF k=60Rerankercross-encoderResults0~1 normalized

services/vector — AnnSearchRequest dense+sparse · RRFRanker(k=60) · scores normalized 0–1

contract renewal terms

The renewal includes a 3% unit price increase, with delivery shortened from 45 to 30 days[G]

sourcesrerank · 0~1
[1]2025_Q3_supply_contract_renewal.pdfp.14
score
0.92

Article 7 (Renewal) Both parties shall adjust unit prices through quarterly consultation…

[2]procurement_meeting_0912.docxp.3
score
0.87

Korean isn't a translation target. It's the default.

From OCR to morpheme search, chunking, and PII guardrails — Korean is built into every layer of the pipeline.

Korean OCR

Self-hosted RapidOCR PPOCRv5 Korean models. Scanned documents and screenshots become text with zero external OCR API cost.

scan_2019_contract.pngRapidOCR · ko

본 계약은 양 당사자 간 상호 신뢰를 바탕으로 체결되며, 계약 기간은 체결일로부터 24개월로 한다.

PPOCRv5 · self-hostedtext extracted

parser.py — LangRec.KOREAN

Morpheme search + sentence-aware chunking

Vector DB server-side BM25 with the Lindera ko-dic morphological analyzer built in — analyzers auto-selected per chunk language. Chunking respects sentence boundaries via 13 separators including Korean/CJK punctuation.

vector-db BM25 · lindera ko-dicanalyzer: ko
공급계약갱신조건tokenize
공급계약갱신조건

chunker · sentence-aware split

chunk 01412 tok
chunk 02388 tok

analyzer_config.py · chunker.py

Legacy encodings

Automatic UTF-8 → CP949 → Latin-1 fallback. Even old Korean notepad files load without corruption.

memo_1997.txttext/plain

����� ��� ��

utf-8 ✗

decode fallback: utf-8cp949 → latin-1

parser.py — TEXT_ENCODINGS

Korean PII guardrails

Six PII types including Korean resident registration numbers and phone numbers are masked or blocked before reaching the LLM. Credit cards use Luhn validation to suppress false positives.

guardrails · pre-LLM maskssn_kr
●●●●●●-●●●●●●●Blocked

chat_inputguardrailsllm

6 PII types

pii_detector.py — 6 PII types · Luhn check

Fully bilingual Korean/English — 13 UI namespaces and transactional emails.

03

Assemble without code. Run on the graph engine, as-is.

The GraphSpec you design on canvas compiles directly to a graph execution engine — this is not a toy builder.

contract-review.agent · GraphSpec v3Run
chat_input

pdf · png · mp3

llm_model

hosted_vllm · temp 0.7

text_retrieval_tool

top_k 8 · rerank

graph_retrieval_tool

mode · hybrid

ai_agent
inputmodeltools
chat_output

streaming · on

string ≠ messages — suggesting a type_convert node
compiled → graph engine
  • 28 nodes
  • 21 port types
  • 10 validation rules
  • graph-engine compile

28 nodes, 8 categories

Input, output, models, agents, memory, tools, flow, transform — connected by drag and drop. Simple mode auto-generates a complete RAG agent from a form.

Type-safe connections

21 port types in distinct colors; 10 validation errors caught the moment you connect — with type-convert node suggestions. 50-step undo/redo.

Direct graph-engine compile

Your canvas GraphSpec compiles straight to a graph execution engine — no translation loss between design and execution engine.

Deep Agent + subagents

Independent LLMs per subagent — big models for heavy work, fast models for simple tasks. Attach text, image, and knowledge-graph retrieval tools to one agent, plus Guardrails and MCP tool nodes.

packages/node-registry — 28 active nodes · services/agent compiler — graph-engine compile

04

A pile of documents becomes a map of knowledge

An LLM extracts entities and relations to auto-build a knowledge graph in a graph DB; the Leiden algorithm finds topic communities.

knowledge-graph · leiden · 3 communities · 40 entities

Supply chain risk is concentrated in three partner companies

[G]graph source

Auto entity & relation extraction

Extracted with relation strength (1–10), with Gleaning re-extraction to fill gaps. The same person or product scattered across 100 documents is merged automatically.

Leiden communities

Topic clusters detected up to 3 hierarchy levels, with LLM-generated community summaries bottom-up. 5-stage auto-pruning and automatic community regeneration.

Three search modes

Local (specific facts, 1–3 hops) / Global (overall trends, map-reduce) / Hybrid — see the trees and the forest at once. [G] markers distinguish graph sources in answers.

Connected to the builder

Assemble a GraphRAG agent with a single graph_retrieval_tool node, no code. Paste sample text and the LLM recommends custom entity types.

services/graph — Leiden max 3 levels · Local/Global/Hybrid search

05

Not a black box. A glass box.

What the agent retrieved, which tools it called, why it answered that way — traced node by node.

debug timelineSSE · live
  • +0.00snode_startchat_input
  • +0.02snode_startai_agent
  • +0.11stool_calltext_retrieval_tool
  • +0.38sretrieval8 chunks · top 0.92
  • +0.41sllm_requestctx 12,408 tok
  • +0.96stool_callweb_search
  • +1.44stool_result3 results
  • +1.52stoken_streamchat_output
8 events · 2 tool callselapsed 1.52s

services/agent — 19 SSE event types · public /status page

  • 19 real-time event types

    Token streams, node start/end, tool calls, RAG context, thinking, subagents — all streamed live over SSE.

  • Debug timeline

    LLM requests/responses, tool calls, and retrieval context traced per node — verify exactly what you designed on the canvas.

  • Improvement loop

    Per-answer thumbs up/down with 7 reason categories and per-agent feedback statistics.

  • Operational transparency

    A public status page, no login required — feature health lights, 90-day uptime, incident timeline.

Was this answer helpful?

90-day uptimeoperational

Trace an agent run yourself

Contact Sales

We'll show you where your documents go — down to the last line

Instead of badges, read the architecture itself.

Internal networkloopback onlyExternalLLM APIBrowserAuth BFFJWT HS256documentvectoragentchatgraphDatabaseVector DBGraph DBObject Store

Air-gapped mode

Configure local embeddings (3 Qwen3) + image embeddings (2 SigLIP2) + rerankers (3 Qwen3) + self-hosted vLLM, and the entire pipeline — indexing to retrieval to generation — runs with zero external API calls.

Air-gapped setup

8 local GPU models

  • Qwen3-Embedding-8B
  • Qwen3-Embedding-4B
  • Qwen3-Embedding-0.6B
  • SigLIP2-giant
  • SigLIP2-large
  • Qwen3-Reranker-8B
  • Qwen3-Reranker-4B
  • Qwen3-Reranker-0.6B

No badges. Read the architecture.

Governance

Deployment is just the start — control, audit, cost

We prepared the items your approval documents will need.

Cost governance

Token and USD cost of every LLM call recorded per provider/model/agent/conversation — metering across embedding, STT, reranking, and captioning. 6-axis org quotas (monthly/daily tokens & budget + per-minute/daily requests), automatic warning emails at 80% and 95%.

The email arrives before the invoice surprises you.

Embedding$0Reranking$0OCR$0Transcription$0

Built-in local models at $0 API cost — only LLM calls are optionally billed

Audit & access control

41 audit event types (19 auth + 22 resource) persisted with IP, User-Agent, and detail JSON — including security denial events. RBAC 4 roles × 22 permissions, remote session listing and per-device forced logout.

Incident response

One-click user/org suspension = login block + session invalidation + full data-path cutoff, a triple gate. Public status page with feature health lights, 90-day uptime, and incident timeline.

usage.cost_usd — last 30 days

$96.40

per provider · model · agent · conversation

Monthly token budget

26.1M / 30M tok

Warning email sent

87% ≥ 80%

cron quota-check — thresholds 80% / 95%

audit_logs — tail

41 event types

  • 14:02:07auth.login_failedip=211.34.•.• · 401
  • 14:02:31document.deletedoc=q3_contract.pdf
  • 14:03:02agent.publishagent=contract-review
  • 14:03:18permission.deniedperm=organization:update

schema.prisma — TokenUsage · UsageEvent · OrganizationQuota / lib/auth/audit.ts — 41 event types

Need more items for your approval documents?

Contact Sales
Deployment

./start.sh — installation is this one line

Vector DB, graph DB, object storage, messaging, and a relational database — a full stack in 19 containers. No Kubernetes required.

onflux — ./start.sh

$

docker ps

19 running

Infra

×10

AI services

×6

Web

×3

$ ./start.sh — 3 stacks, 19 containers

One-line install

A single shell script boots three stacks in order: infra → AI services → web. Everything runs on Docker alone.

Automatic migrations

The web-migrate container runs DB migrations automatically — upgrades are a single command. A built-in cron scheduler container handles quota warnings and status collection with zero extra setup.

GPU is optional

Deploy with 1–2 GPUs split across services, or start in CPU mode with lightweight 0.6B models or external embedding APIs.

No lock-in

6 LLM providers (including self-hosted vLLM) unified through LiteLLM — per-model context windows (up to 1M tokens) adjusted automatically. Swapping embedding models triggers built-in full re-embedding migration.

GPU optionalCPU mode supportedNo K8s

start.sh — 19 containers · GPU profile

Answers before your security team asks

With local Qwen3 embeddings/rerankers + self-hosted vLLM, everything from indexing to retrieval to generation runs with zero external API calls. It's a Docker single-server setup.

Now it's your documents' turn

From upload to cited answers — one-line install, zero external API calls in air-gapped mode.

Sign up and explore the demo instantly

$ ./start.sh