Skip to content

How it works

An app on premises, one inference engine on the same machine, no internet needed to work.

The on-premises stack

All on one machine inside the customer network. Only the services listed below expose a port.

ServiceWhat it doesExposed
appChat, login, administration panel, browser APIPort 443 on the customer network
workerIndexing, source scans, deep research, migrationsInternal API on 127.0.0.1 only
postgresPostgres 17 with pgvector: users, indexed documents, vectors, conversationsInternal Docker network only
llmvLLM, the only inference engineInternal Docker network only
embedQwen3 Embedding served by vLLM, 1024 dimensionsInternal Docker network only
rerankQwen3 Reranker served by vLLMInternal Docker network only
doclingdocling-serve: text, tables and OCR from PDF, Office, scansInternal Docker network only
updaterSigned updates, database copies, certificate, licenceSystem service, outbound connections only

One question, step by step

Search always runs before the first model call: no turn wasted deciding whether to search.

  1. The question goes straight into hybrid search: vectors (HNSW index, cosine distance) and text (italian and simple indexes) in parallel, each with the permission filter inside the query.
  2. The two lists are fused by reciprocal rank, the top 40 passages go to the reranker and the best 8 enter the model context, each with document, heading path and pages.
  3. Then the agent works with tools: cerca_documenti, leggi_documento, elenca_cartella, the enabled MCP servers and the user personal sources, within 8 steps and a token budget.
  4. For broad questions it delegates to subagents: same user and same permissions, read-only tools, one level, 90 seconds, a semaphore across the instance. The main model only receives the summaries.
  5. The answer streams with citations on the exact passage. The passage opens only if the file permission is still valid at that moment.

Permissions

The model only sees what the user could already open. A deny always wins and when in doubt the file is invisible: any error while reading permissions removes it from the index.

SourcePermissions
Windows network shares or NASTwo layers that intersect: share permissions (per source) and NTFS ACLs of the file (per document). Both are required.
SharePoint, OneDrive, TeamsItem permissions from Graph; "anyone in the organisation" links become the "whole company" principal.
Upload collectionsGroups chosen by the administrator.
Chat attachmentThat user only, that conversation only.

Local or external model

The agent loop and the tools are the same: what changes is where the compute runs.

Local (default)

vLLM on the customer machine. No document passage leaves the network.

External endpoint

OpenRouter or any OpenAI- or Anthropic-compatible endpoint. Document passages leave the network: the administrator sees it in writing and the bill is in the customer name.

App only, no GPU

App, worker, Postgres and docling on premises on a VM or a mini PC. We do not host instances.

Transparency (AI Act, art. 50)

Who does what under the European regulation on artificial intelligence.

borc is the provider of the AI system: it places it on the market under its own name, and art. 50(1) requires that people know they are talking to an AI. That is why the notice sits in the chat and stays visible.

The customer is the deployer: it uses the system under its own authority, following the instructions for use. Declared intended use: assistant on company documents. Using it for decisions on hiring, employee evaluation or credit would make it high-risk and is excluded by the contract. The training required by art. 4 is part of the service.