Your factory's private AI, on your own box.
Promethea is a self-hosted AI workspace that turns a company's documents, email, chat and ERP into permission-aware answers — with data sovereignty controls that keep sensitive material on-premises. Built for SMEs, tuned for Taiwan.
Onboarding Agent
An in-app agent scouts readiness and sets you up step by step.
Data sovereignty
The egress gate keeps confidential data on-box; the cloud never sees it.
31 connectors
ERP (Digiwin, Chienhung), LINE, plus 25 Glean-class SaaS sources.
Cloud or on-prem models
AWS Bedrock or on-box Ollama — chosen per query by policy.
Overview
Promethea gives a company a private "ask anything" surface over its own knowledge, without shipping that knowledge to a public SaaS. Every deployment is a dedicated instance the customer owns; retrieval is permission-aware so people only ever see what their role allows; and a configurable egress gate decides, per query, whether an answer may use a cloud model or must stay on the on-box model.
- Ask & retrieve — natural-language Q&A grounded in the company's documents, with cited sources.
- Ingest anything — folders, email, chat, and 31 connectors feed one permission-aware pipeline.
- Govern access — users, groups, departments, per-document sensitivity, and audit.
- Automate — in-chat agents draft quotations, reply to email, write meeting memos, and onboard new customers.
Architecture
Promethea is a four-layer stack running on a single tenant-isolated box:
| Layer | Responsibility |
|---|---|
| Layer 1 — Providers | LLM + embedding providers (AWS Bedrock, on-box Ollama). One base model in memory; per-request model selection. |
| Layer 2 — Shared platform | Retrieval (ChromaDB vector store), access control, egress gate, DLP, connectors, agents, the API (FastAPI). |
| Layer 3 — Tenants | Per-customer data: access_policy.yaml, egress_policy.yaml, the vector store, auth, audit log. |
| Frontend | React SPA served by nginx; talks to /v1. |
bge-m3 (via Ollama) regardless of the chat provider, so document vectors never leave the box even when answers use the cloud model.Quickstart
A customer receives a preinstalled URL — e.g. https://yourco.functionalaisolutions.com/ — and an owner login. From there:
- Sign in as the owner and set a password (first login forces a change).
- Open Onboarding in the sidebar — the agent guides the rest.
- Define departments → create groups → add users → connect a source and ingest → set the egress policy.
- Go to Ask and query your data.
Onboarding Agent
The Onboarding page pairs a live setup checklist with a setup assistant (Claude Sonnet 4.5). The agent reads the system's readiness, focuses you on the next incomplete step, and proposes a concrete action as an Approve button. On approve, the server performs it through the same governed admin functions the UI uses — nothing runs without your confirmation.
The seven readiness checks
| Check | Means |
|---|---|
| AI models available | A chat model + on-box embeddings are configured. |
| Access policy in place | access_policy.yaml exists. |
| Departments defined | The company's departments are set. |
| Groups configured | Roles/groups with feature permissions exist. |
| Users added | People beyond the owner are added and assigned to groups. |
| Documents ingested | At least one source has been indexed. |
| Egress policy set | The data-sovereignty policy is chosen. |
The agent can perform nine action types on approval: add a department, create/update a group, create one or many users, reassign a user's group, ingest from a connector, and set the egress policy. If a customer needs a source Promethea can't connect to yet, the agent raises a support request to first-line support — captured in-app and emailed.
→ Read the full onboarding walkthrough — the customer journey from a fresh box to a working workspace, with screenshots of every screen.
Ask (retrieval-augmented Q&A)
Ask answers questions in natural language, grounded in the tenant's corpus, with the exact source documents cited and downloadable. Retrieval is hybrid (dense + exact-token keyword) and, critically, permission-scoped: the access filter is applied inside the vector search, so a user can never retrieve a document above their clearance — it isn't hidden after the fact, it's never fetched.
- Doc-context expansion — the retrieved chunk locates the document; its neighbours are stitched in to answer.
- Query expansion — paraphrases widen recall on fuzzy questions.
- Model choice — users pick a model (or the deployment default); the egress gate may override the choice for sensitive data.
Documents & ingestion
The Documents page browses the sealed document root, uploads files, and runs bulk indexing.
Ingestion is incremental (a content-hash pre-pass skips unchanged files) and every file flows through the
same pipeline: categorize → normalize → chunk → access-tag → embed → store. Folder layout drives
department tagging automatically (e.g. documents/Sales/… → the Sales department).
Sources & connectors
Beyond folders and email, Promethea ships 31 connectors across one framework. Every connector emits the same normalized item and lands in the same permission-aware pipeline, so ERP rows and Slack threads become retrievable knowledge with no special handling.
Taiwan-first (native)
- ERP SQL — one reader, many ERPs via profiles: Digiwin 鼎新, Chienhung 正航, SAP, generic SQL.
- LINE — chat history + Official Account messages.
- Local folder, Google Drive, Gmail, web crawler.
25 Glean-class SaaS
Slack, Teams, SharePoint, OneDrive, Outlook, Confluence, Jira, ServiceNow, Salesforce, HubSpot, Zendesk, Notion, GitHub, GitLab, Linear, Box, Dropbox, Asana, Trello, monday.com, Airtable, Intercom, Figma, Guru, Zoom.
Connect a source from the Sources page: pick a connector, enter its credentials, and Promethea starts a background ingest. See the developer docs to build a new connector.
Access & roles
Promethea models a company as departments, groups (roles), and users. A user's group grants its departments and a maximum sensitivity clearance; groups also carry feature toggles (governance capabilities like cloud-model use, document download, bulk ingest). Every retrieved chunk is tagged with visibility, department, owner and sensitivity, and the policy engine filters retrieval per caller.
- Per-user privacy — a private upload is visible only to its owner.
- Per-document sensitivity override — reclassify a specific document.
- Permission preview — an admin can safely see exactly what a given user would retrieve, without logging in as them.
- Tamper-evident audit log — every admin change is hash-chained.
Data sovereignty — the egress gate
The egress gate decides, per query, whether an answer may use the cloud model. Actions are allow (send to cloud), route_local (answer on the on-box model instead), or refuse. Rules key on sensitivity, department, and DLP findings (e.g. Taiwan national ID, salary, cost floors).
| Mode | Behaviour |
|---|---|
| strict | Public/internal → cloud OK; confidential → on-box model; secret → refused to cloud. |
| cloud_ok | Everything may go to the cloud model (fastest; for online-first deployments). |
route_local to answer confidential queries; on a Bedrock-only box those fall back to "refuse". The Onboarding Agent can set either mode for you.Agents
In-chat agents perform real work from the corpus + structured stores:
- Draft quotation — builds a quote from products, quantities and historical pricing (with an approval workflow).
- Reply email / support reply — drafts a reply, optionally as an editable
.docx. - Meeting memo — turns notes into a formatted memo.
- Onboarding agent — guided setup (see above).
Agents are declarative (YAML specs) or code-built, and tenants can add their own.
Ecosystem apps
Two companion apps share Promethea's single sign-on under the same domain:
- Company map (
/apps/company/) — a live org chart built from the tenant's real users, departments and documents, filtered per viewer. - Meeting notes (
/apps/meetings/) — live transcription + AI notes; exports Word and Promethea-ingestible data.
Analytics
An admin Analytics view rolls up usage in three tabs: query & model utilization, user activity, and system metrics (CPU, memory, disk). It reads the audit + activity stores — no external telemetry.
Models & deployment
Each Promethea runs on a dedicated instance. The model catalog is per-deployment:
- Cloud — AWS Bedrock: Claude Haiku/Sonnet 4.5, plus Llama, DeepSeek, Nova, Mistral, MiniMax, Kimi, GLM.
- On-box — Ollama (e.g.
qwen2.5) for the egressroute_localpath;bge-m3for embeddings.
An online deployment is typically Bedrock-only for chat (with on-box embeddings). A GPU box is recommended if the customer will run heavy on-prem inference for sensitive queries.
Security & compliance
- Tenant isolation — one instance per customer; data never crosses tenants.
- Permission-aware retrieval — access filter applied inside the vector search.
- Egress control + DLP — sensitive data can be kept entirely on-box.
- Forced first-login password change; JWT-signed sessions; TLS via Let's Encrypt.
- Hash-chained audit log of every admin action.
Glossary
| Term | Meaning |
|---|---|
| Tenant | A single customer's isolated Promethea instance and data. |
| Egress gate | Per-query policy deciding cloud vs on-box answering. |
| Connector | A source integration that emits normalized items into the ingest pipeline. |
| Group / role | A set of departments + clearance + feature permissions assigned to users. |
| Scout | The Onboarding Agent's read-only readiness report. |
| Route local | Egress action: answer on the on-box model instead of the cloud. |