emas.ai
KnowledgeCore
by TechnoNet Sdn Bhd
Data flow

Where your data goes — and doesn't.

The core security property is simple: every component that touches your data runs on your hardware. There is no cloud dependency during operation.

Normal operation — query flow
User browser → HTTPS / LAN → KnowledgeCore API (your server) → Local LLM (your server)
All processing — embedding, retrieval, inference, answer generation — occurs on your hardware. No outbound connection is made.
What does NOT leave your network
✗  Documents and document content
✗  Questions asked by users
✗  Answers generated
✗  User identity or session data
✗  Vector embeddings (numeric representations of your content)
✗  Query logs or audit trail entries
What may leave your network (optional, operator-controlled)
Anonymous usage metrics sent to analytics.emas.ai (page views only, no document content, no query content). This can be disabled by removing the analytics script from deployed HTML files. The API itself sends no telemetry in any configuration.
Encryption

Data at rest and in transit.

WhatEncryption methodStatus
Data in transit (user → API) TLS 1.3 via Cloudflare Tunnel (public endpoint) or LAN HTTPS (private deployment). All API endpoints require HTTPS. Live
Vector database (Qdrant) Docker volume on host filesystem. Host-level encryption (LUKS or macOS FileVault) recommended and documented in the deployment guide. Qdrant data directory is not exposed outside the container network. Live
PostgreSQL (relational store) Docker volume. Same host-level encryption applies. PostgreSQL connection uses password authentication; password is environment-variable injected, not in source code. Live
Redis (response cache) Docker volume. Cache keys are SHA-256 hashes of the query — no plaintext question stored. Cache entries expire after configurable TTL (default 1 hour). Live
Licence keys (JWT) RSA-256 signed. Private key is never transmitted — stored on TechnoNet infrastructure only. Public key is embedded in the deployed application for validation. Live
Application secrets (.env) Environment variables injected at container startup via Docker env_file. Not stored in source code or logs. Rotation supported via container restart. Live
Authentication and access control

Who can access what.

Bearer token authentication
Every API call requires a valid bearer token in the Authorization header. Tokens are per-tenant — a token issued for Tenant A cannot access Tenant B's data. Tokens are prefixed (kc-*) for easy identification in access logs.
Tenant isolation
Each tenant has its own isolated vector collection in Qdrant and its own partition in PostgreSQL. The API enforces tenant_id at the query layer — cross-tenant data retrieval is architecturally impossible, not a policy rule.
JWT session tokens (dashboard)
Customer dashboard access uses RS256-signed JWT sessions with 30-day expiry. Sessions can be invalidated server-side. Issued on registration and login — not reissuable without re-authentication.
System vs customer keys
System API key (operator use, no token deduction). Customer API keys (kc-*, deduct 1 token per query, return 402 at zero balance). Role distinction is enforced at the auth middleware layer.
Token expiry and rotation
API keys do not expire by default but can be revoked immediately via the admin API. JWT sessions expire at 30 days. Key rotation requires generating a new key and updating the client — no downtime required.
RBAC (roadmap)
Department-level permissions (HR can only query HR documents, Finance only Finance) are on the engineering roadmap. Current implementation is tenant-level isolation. RBAC is scheduled before the second enterprise client onboarding.
Audit logging

Full traceability of every answer.

Every query is logged with enough context to reconstruct exactly what was asked, what was retrieved, and what was answered.

Log entry fieldValue captured
tenant_idWhich tenant made the query
timestampUTC timestamp of the query
questionThe exact question submitted
intentQuery intent classification (VECTOR / RELATIONAL / HYBRID)
sources citedDocument names, page numbers, and confidence scores returned with the answer
corpus_gapsQueries that could not be answered (no relevant content found) are logged to a separate corpus_gaps table — enabling corpus gap analysis
node_timingsProcessing time per pipeline stage — retrieval, reranking, generation — for performance audit
answer_retry / grade_retryWhether the system retried retrieval or answer generation due to quality issues — surfaced in the audit trail

Logs are stored in PostgreSQL on your server. Export via SQL query. Retention period is configurable. Tamper-evidence hardening (append-only log table) is on the roadmap for regulated sector clients.

PDPA and PDPO alignment

Compliance posture for Malaysian and Brunei deployments.

ObligationHow KnowledgeCore addresses itStatus
Data residency All processing on customer hardware. No data crosses a national border. Consistent with PDPA s.129 (cross-border transfers) by design — there is no transfer to make. Live
Security Principle (PDPA s.9) Access control (bearer token), authentication (per-tenant keys), encryption in transit (TLS), audit logging (PostgreSQL). PDPA (Security) Regulations 2013 minimum measures met. Live
Controller / processor roles Customer is the data controller. TechnoNet is the data processor under a Data Processing Agreement (DPA). DPA template available to Enterprise and Industrial clients. Available
Breach notification readiness All query logs and document access are timestamped and attributed to tenant. If a security incident occurs, logs provide the forensic trail required for PDPC notification under PDPA s.12B (inserted by the 2024 Amendment). Live
Retention and deletion Response cache TTL is configurable (default 1 hour). Corpus deletion API removes all indexed content for a tenant. PostgreSQL records can be purged on request. Documented deletion procedure provided on request. Live
Brunei PDPO 2025 Same on-premise architecture satisfies Brunei's PDPO 2025 data residency requirements. Live
Penetration test Independent penetration test not yet conducted. Planned before Industrial tier clients onboard. Available on request for Enterprise clients as part of the setup engagement. Roadmap
ISO 27001 Not certified. TechnoNet follows ISO 27001 controls as internal practice; no certification is planned. Not certified
Air-gap and offline deployment

For environments with no internet access.

The Industrial tier supports fully air-gapped deployments. The server has no internet access after installation — licence validation, model inference, and all queries operate entirely offline.

ComponentAir-gap behaviour
Licence validationJWT licence validated using the embedded RSA public key — no call to TechnoNet servers required after deployment.
AI model inferenceLLM and embedding models are GGUF/MLX files stored locally. No API calls to OpenAI, Anthropic, or any cloud AI provider.
Vector databaseQdrant runs as a local Docker container. No cloud sync, no telemetry.
Model updatesNew model versions are delivered as file packages — transferred via secure media (USB/SCP). Update process documented in the deployment guide.
DNS / outboundApplication makes no DNS calls during normal operation. Firewall rule blocking all outbound traffic can be applied without breaking core functionality.
Procurement questions

Common questions from IT security teams.

QuestionAnswer
Does the application phone home? The API server does not. The website HTML includes an analytics pixel (analytics.emas.ai) that can be removed in your deployment package — it tracks page views only, no document or query content.
What ports does it use? API: 8000 (configurable). Qdrant: 6333 (internal). PostgreSQL: 5432 (internal). Redis: 6379 (internal). Cloudflare Tunnel: outbound 443 only (optional, for public endpoint).
Can we inspect the source code? Yes. Enterprise and Industrial licences include source code access. Full codebase is delivered as part of the deployment package.
What happens to our data if we cancel? Your deployment continues running — nothing is held in TechnoNet infrastructure. On cancellation, your licence key expires but the software continues to function on your hardware. You retain your documents, your database, and your indexed corpus.
Do you have a DPA? Yes. A Data Processing Agreement template is available for Enterprise and Industrial clients. Contact us for the current version.
Can we do a pen test? Yes. Enterprise clients may conduct penetration testing on their own deployed instance. We provide the full application source code for analysis. Coordinate with your account manager for timing.
Security questions not answered here?
Talk to our team. We can provide architecture diagrams, DPA templates, and deployment documentation for your procurement review.
Request Security Pack → Deployment Guide →