emas.ai
KnowledgeCore
by TechnoNet Sdn Bhd
Hardware sizing

Pick the tier that fits your corpus.

KnowledgeCore runs the AI models locally. Sizing depends on how many documents you're indexing and how many concurrent users will query. All tiers support air-gap deployment.

Minimum
Proof of concept · Up to 500 pages
CPUApple Silicon M2 Pro, Intel i9-12th gen, or AMD Ryzen 9 equivalent RAM32 GB unified/system memory Storage512 GB NVMe SSD GPUIntegrated or no discrete GPU (CPU inference — slower) OSmacOS 14+, Ubuntu 22.04 LTS Concurrent users1–3 First-token latency15–25 seconds
Enterprise
High-volume · 5,000–50,000 pages
CPUApple Silicon Max or Ultra (Mac Studio) or dual-socket AMD EPYC RAM128–192 GB Storage2–4 TB NVMe (RAID-1 recommended) GPUApple Silicon GPU (Metal) or 2× NVIDIA A100/H100 OSmacOS 15+, Ubuntu 22.04 LTS, RHEL 9 Concurrent users20–100 First-token latency<3 seconds
Storage formulaEstimate
Per document page (PDF/DOCX)~50 KB of vector storage in Qdrant
1,000-page corpus~50 MB vector store + ~200 MB raw documents
10,000-page corpus~500 MB vector store + ~2 GB raw documents
AI models (recommended tier)~18 GB LLM (qwen3:30b-a3b) + ~1 GB embeddings (bge-m3) + ~8 GB auxiliary models
OS + Docker + application~30 GB overhead
Recommended minimum free spaceDocuments + models + 2× headroom
Prerequisites

What must be installed before we arrive.

TechnoNet handles the KnowledgeCore installation. The following must be ready on the target machine before the setup session.

RequirementVersionNotes
Docker Desktop (macOS) or Docker Engine (Linux)27.x or laterRequired All application services run in Docker containers
Docker Composev2.x (included with Docker Desktop)Required
Available disk spaceAs per sizing table aboveRequired
Outbound port 443—Required For initial model download during setup. Can be blocked post-install for air-gap operation.
Python 3.113.11.x arm64/x86_64Required For ingest pipeline (runs outside Docker)
macOS login to account with admin rightsmacOS 14+Required For launchd service registration
SMTP credentials (optional)—Recommended Enables licence email delivery and renewal reminders
Domain / hostname—Recommended For HTTPS access on your network. We can configure with an IP address if no domain is available.
Installation

What happens on setup day.

A TechnoNet engineer (on-site or remote via SSH/Screen Sharing) completes these steps. Estimated time: 4–6 hours for a first deployment including model downloads.

1
Deploy application containers
Docker Compose brings up 5 services: KnowledgeCore API, Qdrant vector database, PostgreSQL, Redis, Neo4j. Services are configured to restart automatically on reboot.
# Clone or copy the deployment package git clone <repository URL supplied with your licence> /opt/knowledgecore cp .env.example .env # edit with your credentials docker compose up -d # starts all 5 services
2
Install and start the LLM inference server
llama-server (llama.cpp build) is registered as a system service via launchd (macOS) or systemd (Linux). It loads the AI model into memory and exposes the OpenAI-compatible API on port 11436. Model download: ~17 GB — takes 15–30 minutes on a fast connection.
# Model is copied to the models/gguf/ directory # launchd plist is installed to ~/Library/LaunchAgents/ launchctl load ~/Library/LaunchAgents/com.knowledgecore.llama-server.plist # Verify: model loaded, accepting connections curl http://localhost:11436/health
3
Install embedding and proposition models
Ollama is installed as a login item (macOS) or systemd service (Linux). The bge-m3 embedding model (~600 MB) is pulled. The proposition extraction model (~4 GB MLX) is installed as a second launchd service.
ollama pull bge-m3:latest ollama pull qwen3:14b # on-demand — only loads on first call # vllm-mlx for proposition extraction launchctl load ~/Library/LaunchAgents/com.knowledgecore.vllm-mlx.plist
4
Configure tenant and ingest documents
A tenant configuration file is created for your organisation with document authority weightings. Your documents (PDF, DOCX, XLSX) are placed in the ingest directory. The ingest pipeline processes each document: PDF parsing → proposition extraction → embedding → vector storage → relational triple extraction.
# Copy your documents to data/raw/<tenant_id>/ # Run the ingest pipeline python3 scripts/ingest.py --tenant your_org --all # Monitor progress tail -f tenants/your_org/outputs/ingest.log # Typical time: 200-page corpus ~11 minutes
5
Verify end-to-end with a live query
A test query confirms the full pipeline: retrieval, reranking, and answer generation. Latency and source citations are checked. The health endpoint confirms all services are online.
curl -s http://localhost:8000/health | python3 -m json.tool # Expect: "status": "ok", all services green curl -X POST http://localhost:8000/query \ -H "Authorization: Bearer YOUR_API_KEY" \ -d '{"question": "What is our data retention policy?", "tenant_id": "your_org"}' # Expect: cited answer with source documents listed
6
Configure network access and backup
Caddy reverse proxy is configured for HTTPS access. API keys are issued for end users. NAS backup is scheduled (nightly at 3 AM) — backs up PostgreSQL, Qdrant vector snapshots, and raw documents.
Deployment timeline

From sign-off to live system.

Day 0Licence issued, deployment package and credentials shared securely. Hardware prerequisites confirmed.
Day 1Setup session (on-site or remote, 4–6 hours). Containers deployed, models loaded, documents ingested, end-to-end verified. System is live.
Day 2–5Users begin querying. Any retrieval gaps or document issues surfaced and resolved. Additional documents ingested if needed.
Week 2Optional: RAGAS evaluation run (requires a declared maintenance window). Accuracy baseline documented for your corpus.
OngoingNew documents: re-ingest at any time. Model upgrades governed — benchmark before applying. Nightly backup verified via status file.
Maintenance

Keeping the system healthy.

KnowledgeCore is designed for unattended operation. The following procedures cover the most common maintenance tasks.

TaskWhenCommand / procedure
Health check Any time ~/hc.sh — 29-check colour-coded report: API, LLM, vector DB, cache, NAS backup, all services.
Add new documents When corpus changes Copy files to data/raw/<tenant>/, then python3 scripts/ingest.py --tenant <id> --new-only. Flush Redis cache after.
API restart (after config change) Config changes only docker compose up -d --force-recreate knowledgecore
LLM server restart If model hangs or swap file grows launchctl kickstart -k gui/$(id -u)/com.knowledgecore.llama-server
Docker daemon freeze Rare — symptom: all docker commands hang Hard-kill all Docker processes, reopen Docker Desktop from GUI. Requires Screen Sharing if headless.
Verify nightly backup Daily (automated via AuditCore monitor) cat nas_backup_status.json — shows last backup phase and status.
Model upgrade Governed — TechnoNet-approved only Upgrade → RAGAS benchmark (maintenance window) → ≥95% pass → update compatibility matrix → deploy.
Application update On new release git pull && docker compose build knowledgecore && docker compose up -d --force-recreate knowledgecore
Document support

What you can ingest.

FormatSupportNotes
PDF (text-layer)FullScanned PDFs without a text layer require OCR pre-processing (not included — contact us for the OCR add-on).
DOCX (Word)FullHeadings, tables, and bullet structure preserved.
XLSX (Excel)FullTabular data extracted row-by-row. Formulae values (not formulas) are indexed.
TXT / MarkdownFullPlain text and Markdown are ingested natively.
Scanned PDF (image-only)OCR add-onAvailable as a professional services add-on. Adds Tesseract OCR pre-processing stage.
Images (charts, diagrams)RoadmapMultimodal ingestion (visual + semantic) is on the engineering roadmap. Currently only text content is indexed.
Audio / videoNot supportedTranscript pre-processing required before ingest. Contact us for a transcription pipeline quote.
Ready to deploy?
Talk to our team. We'll confirm your hardware, schedule the setup session, and have you live the same day.
Book a Setup Session → Security Pack →