Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Ambient AI digital twins that live directly in Microsoft Teams, Slack, GitHub, and enterprise episodic memory.
BusinessGitHub @mohammadali-2000Latest connection check failedOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
Autonomous workplace digital twins and multi-agent coordination platform for enterprise engineering delivery pods.
Taken from the repository README
Loading the full README.
Read the full README ↗Autonomous workplace digital twins and multi-agent coordination platform for enterprise engineering delivery pods.
Live app: https://twinops-enterprise.onrender.com (Hosted on Render's free tier, which sleeps after ~15 minutes of inactivity, so the first request may take 30-50 seconds to wake up.)
Health check: https://twinops-enterprise.onrender.com/api/health
TwinOps is an enterprise orchestration platform that builds specialized digital twin agents for engineering leads, architects, and product managers. These digital twins represent team leads when they are unavailable, answering technical and procedural queries across enterprise communication channels such as Microsoft Teams and Slack.
The system connects directly to enterprise systems of record—including GitHub, Jira, and Confluence—and indexes organizational decisions into an encrypted PostgreSQL vector database. When queried, agents synthesize answers grounded in verifiable enterprise artifacts, complete with citations, confidence scores, and human-in-the-loop escalation paths for high-risk actions.
TwinOps is built as a modular system comprising an API gateway, agent reasoning engine, memory mesh, and enterprise integration connectors.
graph TD
subgraph Client Channels
Teams[Microsoft Teams Adaptive Cards]
Slack[Slack Workspaces]
WebUI[TwinOps Enterprise Web UI]
end
subgraph Application Tier Next.js 16
Gateway[API Gateway & Webhook Ingestion]
Auth[Enterprise Authentication & RBAC]
Brain[CloneBrain Reasoning Engine]
Collab[Multi-Agent Consensus Protocol]
end
subgraph Data & Persistence Tier
Supabase[(PostgreSQL + pgvector)]
AuditLog[(Immutable Audit Trail)]
LocalCache[(Session State Cache)]
end
subgraph Enterprise Integrations
GitHub[GitHub REST & GraphQL API]
Jira[Atlassian Jira REST API]
OpenAI[OpenAI / Azure OpenAI Service]
end
Teams --> Gateway
Slack --> Gateway
WebUI --> Gateway
Gateway --> Auth
Auth --> Brain
Brain --> Collab
Brain --> Supabase
Brain --> AuditLog
Brain --> LocalCache
Brain --> GitHub
Brain --> Jira
Brain --> OpenAI
CloneBrain.pgvector hybrid search (HNSW cosine similarity combined with TSVector keyword matching).pgvector (Supabase Cloud)tsx.
├── .github/
│ └── workflows/
│ └── ci.yml # GitHub Actions CI pipeline (lint, test, build, secrets)
├── app/ # Next.js App Router
│ ├── (app)/ # Authenticated application views (dashboard, clones, settings)
│ ├── api/ # REST API routes and webhook receivers
│ │ ├── chat/ # Interactive conversational streaming endpoint
│ │ ├── github/ # GitHub repository synchronization
│ │ ├── integrations/ # Channel status and configuration verification
│ │ ├── memory/ # Vector search and memory compaction
│ │ └── twinops/ # Digital twin management and document ingestion
│ └── page.tsx # Root application entrypoint
├── backend/
│ └── memory/ # Database repository, vector search, and cache layer
├── components/ # React UI components
│ ├── chat/ # Chat window, message bubbles, and collaboration panel
│ ├── dashboard/ # Agent status cards, logs, and activity telemetry
│ ├── layout/ # Navigation headers and enterprise sidebars
│ └── twinops/ # Network visualization and channel simulator
├── docs/ # Enterprise technical documentation
│ ├── agent-architecture.md # Multi-agent coordination, tools, and guardrails
│ ├── architecture.md # System components and data flow
│ ├── deployment.md # Docker, Kubernetes, and Vercel deployment guides
│ ├── development.md # Local developer setup, branching, and PR guidelines
│ ├── integrations.md # Connector architecture and configuration guides
│ └── security.md # Threat modeling, secrets, prompt injection defense
├── lib/
│ ├── agents/ # CloneBrain orchestrator and multi-agent collaboration
│ ├── core/ # Supabase database clients, chunkers, and core types
│ ├── integrations/ # Connectors (Teams, Slack, GitHub, Jira, Notion)
│ ├── memory/ # Search indexing and memory extraction logic
│ └── twinops/ # Enterprise API client abstractions
├── supabase/
│ ├── migrations/ # PostgreSQL DDL and pgvector indexes
│ └── seed.sql # Baseline schema seeds for system agents
├── tests/ # Unit and integration test suite
│ ├── agent-brain.test.mjs
│ ├── integrations.test.mjs
│ ├── memory-repository.test.mjs
│ └── security-boundaries.test.mjs
└── package.json # Dependency manifests and automation scripts
git clone [email protected]:mohammadali-2000/twinops-enterprise.git
cd twinops-enterprise
npm ci
cp .env.example .env.local
Edit .env.local with your database and model provider credentials. Refer to the Configuration section below.
npm run dev
Access the application at http://localhost:3000.
npm test
npm run lint
npx tsc --noEmit
npm run build
TwinOps requires configuration via environment variables. Copy .env.example to .env.local for local execution. Never commit actual secret values to version control.
| Variable | Description | Required | Example |
|---|---|---|---|
NEXT_PUBLIC_SUPABASE_URL | Supabase API URL | Yes | https://xyzcompany.supabase.co |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Supabase Anonymous Client Key | Yes | eyJhbGciOi... |
SUPABASE_SERVICE_ROLE_KEY | Supabase Service Role Key | Yes | eyJhbGciOi... |
OPENAI_API_KEY | OpenAI API Key or Azure OpenAI Key | Yes | sk-proj-... |
OPENAI_MODEL | Default model identifier | No | gpt-4o |
TEAMS_WEBHOOK_URL | Microsoft Teams Power Automate Webhook | No | https://prod-01.westus.logic.azure.com/... |
USE_SUPABASE_MEMORY | Enables RAG retrieval for the agent | Yes | true |
GITHUB_TOKEN | GitHub Personal Access Token | No | github_pat_... |
JIRA_BASE_URL | Atlassian Jira site URL (https) | No | https://company.atlassian.net |
JIRA_EMAIL | Service account email for Jira API | No | [email protected] |
JIRA_API_TOKEN | Jira Cloud API Token |
The platform features standardized enterprise connectors partitioned into implemented, partially implemented, and planned categories.
| Integration | Status | Implementation Details |
|---|---|---|
| Microsoft Teams | Implemented | Inbound questions via Power Automate flow to /api/teams/events (shared-secret auth); outbound Adaptive Cards v1.4 with citation links. |
| GitHub | Implemented | Client in lib/integrations/github.ts syncs repos, commits, and pull requests into vector memory with embeddings. |
| Jira | Implemented | Live sync (lib/integrations/jira.ts) converts ADF to text, chunks and embeds issues; real-time updates via webhook at /api/jira/webhook. |
| Slack | Implemented | Bidirectional: syncs channel history into memory and answers @TwinOps mentions, DMs, and twin: messages in real time via /api/slack/events. |
| Notion | Partial | Document parser and sync schema implemented in lib/integrations/notion.ts; requires internal integration token. |
| Google Workspace | Partial | OAuth routing configured in app/api/auth/google/route.ts; requires Google Cloud Console Client ID and Secret. |
| Microsoft Graph API | Planned | Direct Graph API integration for corporate Outlook calendar presence synchronization and enterprise directory lookup. |
Agents have access to typed, schema-validated tools:
search_memory: Queries episodic memory using vector similarity.consult_clone: Initiates cross-agent consensus requests with recursion depth limits (MAX_DEPTH = 3).get_github_pr: Retrieves pull request context and file diffs.search_jira_issues: Queries sprint issue backlogs using JQL.<untrusted_external_content> tags to prevent indirect prompt injection.tenant_id and verified user identities.main: Protected production branch. Direct commits are restricted.feat/<ticket-id>-<description>fix/<ticket-id>-<description>refactor/<description>Commits must follow the Conventional Commits standard:
feat(scope): add new capabilityfix(scope): resolve bugrefactor(scope): restructure without functional changesecurity(scope): apply security patch or boundary checktest(scope): add or modify automated testsdocs(scope): update technical documentationPull requests must pass the following continuous integration checks:
npm run lint (0 errors)npx tsc --noEmit (0 type errors)npm test (all tests passing)npm run build (successful production build)Current live deployment: Render. The app runs as a Render web service at
https://twinops-enterprise.onrender.com, built from this repo on every push to main
via the render.yaml blueprint. See docs/RENDER-DEPLOYMENT-GUIDE.md for the full setup.
Other supported targets:
Dockerfile is included for AWS ECS / Kubernetes.
The standalone build is opt-in via BUILD_STANDALONE=1 (set automatically in the Dockerfile).Before first traffic, run the schema migration (supabase/migrations/) against your
PostgreSQL database via the Supabase SQL editor or CLI.
docs/GETTING-STARTED.md — step-by-step setup for someone with zero prior experienceSETUP-GUIDE.md — connecting GitHub, Jira, Slack, and Teams in plain languageRENDER-DEPLOYMENT-GUIDE.md — deploying the live app on RenderREALTIME-INTEGRATIONS-GUIDE.md — the real-time Slack and Jira webhook flowsFailed to fetch clones or Vector store unconfigured log notices.NEXT_PUBLIC_SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY in .env.local. When running without a live database, services gracefully return empty states ([]) rather than crashing./api/twinops/chat with message AI model service unconfigured.OPENAI_API_KEY is present and has active quota. For enterprise Azure OpenAI deployments, configure the appropriate Azure resource endpoint and deployment name.TEAMS_WEBHOOK_URL uses HTTPS and is reachable from your network.| No |
ATATT3xFfGF0... |
SLACK_BOT_TOKEN | Slack Bot User OAuth Token | No | xoxb-... |
SLACK_SIGNING_SECRET | Slack Webhook Signing Secret | No | 9a8b7c6d... |
TEAMS_FLOW_SECRET | Shared secret for the Power Automate flow calling /api/teams/events | No | 3f9c... |