13-Server EU Fleet · East Africa

Intelligence Infrastructure,
End to End

The PJS platform powering Lindela, Shule, Wakili, Token-X, Talente, and 8 more. Shared auth, AI gateway, vector search, and observability out of the box.

13
Servers
12
Applications
43
Postgres Exts

The Product Suite

Twelve applications across intelligence, legal, education, finance, HR, safety, and document automation, all on the shared platform.

🧠
Lindela
● Live

AI intelligence platform for news aggregation, satellite acquisition, roster management, and real-time insight delivery. Next.js + FastAPI, backed by TimescaleDB and pgvector.

Next.js 15FastAPIpgvectorTimescaleDBKeycloak OIDC
🏫
● Live

Kenya CBC school management system. 14 FastAPI microservices handling academic records, fees, KNEC integrations, CBC curriculum, and CBC reporting. Orchestrated by Temporal and NATS.

Next.js14× FastAPITemporalNATSCBC / KNEC
Legacyshule.datacraft.co.ke
Full Technical Specification →
⚖️
Wakili
⚡ Deploying

AI-powered legal platform for Kenyan practitioners. Modules: practice management, legal-quest research, contract drafting, cite-sentry, risk navigator, justice-lens, IP-shield, and a law academy.

Next.jsFastAPI12× servicesPostgreSQL
🔗
Token-X
⚡ Deploying

Multi-chain asset tokenization platform. Native integrations for Hedera, Solana, Stellar, Tezos, Algorand, and Liquid. Temporal-orchestrated workflows; RAG copilot on vault server.

Next.jsTemporalHederaSolanaStellarTezos
🕸️
● Live

Knowledge graph platform with a dedicated graph query API and interactive explorer at kg.ale.llocal.com. Celery worker + beat for background graph enrichment jobs.

Next.jsFastAPIKnowledge GraphCelery
API / KGFastAPI + KG API
KG explorerkg.ale.llocal.com
📐
● Live

Architecture and design management platform. Next.js frontend with a FastAPI backend and arq async worker for long-running processing tasks.

Next.jsFastAPIarq worker
Legacyarcht.lindela.io
🎯
● Live

Talent management and HR platform with real-time collaboration via Centrifugo WebSocket channels. Next.js web, FastAPI backend, and Centrifugo for live updates.

Next.jsFastAPICentrifugoWebSockets
Centrifugo:8000
🛡️
Dada Salama
● Live

Women's safety platform covering Kenya and East Africa. Alert system, safe-route mapping, community support features, and emergency contact management. Also at dada-collective.com.

Next.jsFastAPISafety alerts
TLDs.com · .co.ke · .info · .net
📊
StratExec
⚡ Deploying

Strategy execution platform linking OKRs to operational tasks. Frontend, API, and an async worker for scheduled analysis and reporting.

Next.jsFastAPIasync worker
📄
DocFusion
● Live

Document automation and AI extraction platform. Accepts PDF/DOCX/XLSX via API, runs Docling for structured extraction, and returns clean JSON or generated output documents.

Next.jsFastAPIDoclingPDF/DOCX
Backend port:8000
🔐
MeGuard
● Live

Personal and organisational security platform. Identity verification, threat monitoring, and incident response tooling. Also at guard.co.ke.

FastAPIRedisnginx
Hyperion-X
pswitch platform
⚡ Deploying

Production-grade financial payment switch. Routes transactions across card networks (Visa, Mastercard, UnionPay), real-time rails (FedNow, SEPA Instant, PAPSS), and correspondent banking channels through a single processing core. Sub-100 ms authorization, PCI DSS v4.0.1 compliant.

ISO 8583ISO 20022FAPI 2.0PAPSSM-PesaPCI DSS v4
NetworksVisa · MC · UnionPay · PAPSS
RailsFedNow · SEPA Instant
Latency<100 ms authorization
CompliancePCI DSS v4.0.1 · NIST
Full Technical Specification →
💳
Hyperion-L
situ platform
⚡ Deploying

Full-stack digital credit infrastructure for regulated lenders under the Central Bank of Kenya Digital Credit Provider (CBK DCP) framework. End-to-end coverage from borrower acquisition through IFRS 9 provisioning, CBK regulatory submission, and LP reporting.

CBK DCPIFRS 9 / ECLODPCM-PesaFastAPI
ComplianceCBK DCP · IFRS 9 · ODPC
MarketsKenya (CBK licensed)
Domainsitu.datacraft.co.ke
Full Technical Specification →
🌐
Karibu Build
● Live

Automated website builder for African SMBs. 15-stage pipeline: scrape → brand → copy → SEO → i18n → scaffold → images → preview → Lighthouse gate → deploy. Astro + Tailwind output.

Python pipelineAstroLiteLLMLighthouseFirecrawl
Previewspreview.karibu.build

Shared Platform Services

All applications share a common set of infrastructure components: no per-app auth, storage, or observability stacks to maintain.

🗄 Database Cluster

PostgreSQL PRIMARY + hot standby. 43 extensions, 120+ GB data.

  • Primary + streaming standby replica
  • pgvector · TimescaleDB · PostGIS · pg_cron
  • Redis shared cache (fleet-wide)
  • pgBackRest: WAL archiving + PITR
  • 43+ extensions incl. pgvector, timescaledb, postgis, rum, h3

🔑 Auth Stack

Keycloak for AuthN + SpiceDB for fine-grained AuthZ.

  • Keycloak OIDC: shared realm, one client per app
  • SpiceDB: relationship-based access control
  • keycloak_sub → app_user.id → SpiceDB relationships
  • MinIO: S3-compatible object storage
  • Documenso: e-signature at sign.lindela.io

🤖 AI Gateway

LiteLLM proxy on vault.lindela.io: single endpoint for all models.

  • LiteLLM gateway (llm.lindela.io)
  • Ollama (local open-weight models)
  • Embedding server: nomic-embed-text-v1.5
  • ASR: faster-whisper transcription
  • TTS: openedai-speech + Kokoro (kokoro.lindela.io)
  • Translation: NLLB-200 (translate.lindela.io)

🔍 Search & Connectors

Web search, document ingestion, and real-time relay on search.lindela.io.

  • SearXNG: privacy-first meta-search
  • Firecrawl: JS-rendered scraping
  • Docling: PDF/DOCX structured extraction
  • Soketi: Pusher-compatible WebSocket relay
  • Umami: privacy-first analytics
  • Taky: TAK server

📊 Observability

Prometheus + Grafana + Loki + Wazuh across all 13 nodes.

  • Prometheus: metrics collection fleet-wide
  • Grafana (grafana.lindela.io): dashboards
  • Loki: log aggregation
  • Promtail: log shipper on every node
  • Node Exporter: host metrics fleet-wide
  • Wazuh SIEM: manager + agents across all nodes

🔒 Secrets & PKI

OpenBao (Vault fork) on vault.lindela.io with AppRole auth.

  • OpenBao (vault.lindela.io): secrets management
  • AppRole auth for service-to-service secrets
  • GPG-based operator secrets store
  • Caddy: auto TLS (Let's Encrypt) fleet-wide
  • WireGuard mesh: full-mesh VPN across all nodes

📬 Mail & Notifications

Stalwart mail server + ops notification stack.

  • Stalwart Mail: SMTP/IMAP for all platform domains
  • Domains: llocal.com, lindela.io, karibu.build, …
  • Ntfy: push notifications (push.token-x.finance)
  • Uptime Kuma: status monitoring
  • GlitchTip: error tracking
  • Chatwoot: customer messaging

⚙️ Workflow Orchestration

Temporal for durable workflows; NATS for event streaming (Shule).

  • Temporal: durable workflow orchestration
  • NATS JetStream: Shule microservice event bus
  • Celery + beat: ALE background enrichment
  • arq: Archt async worker (Redis-backed)

Infrastructure Fleet

13 dedicated servers across the EU, connected via an encrypted full-mesh VPN. Separated tiers for data, auth, AI/ML, observability, mail, and application workloads.

Data Tier

PostgreSQL primary + hot standby replica. Continuous WAL archiving with point-in-time recovery.

Auth & Security

Dedicated auth server: Keycloak OIDC, SpiceDB relationship store, MinIO object storage, Documenso e-signature, Temporal workflow engine.

AI / ML

Dedicated ML server: LiteLLM gateway, Ollama, embedding, ASR, TTS, and NLLB translation. Secrets managed by OpenBao.

Observability & Mail

Dedicated node: Stalwart Mail, Prometheus, Grafana, Loki, Wazuh SIEM manager.

Search & Connectors

Dedicated node: SearXNG, Firecrawl, Docling, Soketi WebSocket relay, Umami analytics.

Application Servers

Three dedicated app servers running the full product suite under Caddy TLS. Two additional servers provisioned for future capacity.


Auth Pattern

Every application follows the same two-step auth pattern: Keycloak answers who is this?, SpiceDB answers can they do X on Y?

Client (Browser / App)
OIDC code flow
Keycloak OIDC
auth.lindela.io
realm: lindela
App Backend
JWT validation
keycloak_sub lookup
SpiceDB
auth.lindela.io
relationship check
Allow / Deny
resource + action

Per-App Setup

  • One OIDC client per app in the lindela realm
  • App maps keycloak_subapp_user.keycloak_id
  • SpiceDB relationships keyed on app_user.id
  • Authorization schema per app in SpiceDB