{"id":47731004,"url":"https://github.com/getsynkora/synkora-ai","last_synced_at":"2026-05-24T02:07:38.099Z","repository":{"id":346062234,"uuid":"1188370844","full_name":"getsynkora/synkora-ai","owner":"getsynkora","description":"Open-source AI agent platform for building, deploying, and managing AI teammates. Role-based agents (PM, Engineer, Support, Marketing) with custom tools, knowledge bases, and 50+ integrations. Self-hosted, multi-provider LLM support, no vendor lock-in.","archived":false,"fork":false,"pushed_at":"2026-05-19T02:07:13.000Z","size":28132,"stargazers_count":6,"open_issues_count":3,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-05-19T04:16:08.884Z","etag":null,"topics":["agent-framework","agentic-ai","agents","ai","anthropic","claude-code","fastapi","gemini","llm","mcp","multitenant","nextjs","openai","rag"],"latest_commit_sha":null,"homepage":"https://synkora.ai","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/getsynkora.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-22T01:24:44.000Z","updated_at":"2026-05-19T02:06:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/getsynkora/synkora-ai","commit_stats":null,"previous_names":["rajuniit/synkora-ai","getsynkora/synkora-ai"],"tags_count":98,"template":false,"template_full_name":null,"purl":"pkg:github/getsynkora/synkora-ai","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getsynkora%2Fsynkora-ai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getsynkora%2Fsynkora-ai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getsynkora%2Fsynkora-ai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getsynkora%2Fsynkora-ai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/getsynkora","download_url":"https://codeload.github.com/getsynkora/synkora-ai/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getsynkora%2Fsynkora-ai/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33418555,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"online","status_checked_at":"2026-05-24T02:00:06.296Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-framework","agentic-ai","agents","ai","anthropic","claude-code","fastapi","gemini","llm","mcp","multitenant","nextjs","openai","rag"],"created_at":"2026-04-02T21:32:23.083Z","updated_at":"2026-05-24T02:07:38.090Z","avatar_url":"https://github.com/getsynkora.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Synkora\n\n\u003c!-- CI/CD Badges --\u003e\n[![CI Pipeline](https://github.com/getsynkora/synkora-ai/actions/workflows/main-ci.yml/badge.svg)](https://github.com/getsynkora/synkora-ai/actions/workflows/main-ci.yml)\n[![API Tests](https://github.com/getsynkora/synkora-ai/actions/workflows/api-tests.yml/badge.svg)](https://github.com/getsynkora/synkora-ai/actions/workflows/api-tests.yml)\n[![Coverage](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/rajuniit/6adfe45792942ae62d18c5e89128498b/raw/coverage-badge.json)](https://github.com/getsynkora/synkora-ai/actions/workflows/api-tests.yml)\n\n\u003c!-- Tech Stack Badges --\u003e\n[![Python](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)\n[![Next.js](https://img.shields.io/badge/Next.js-15.1-black)](https://nextjs.org/)\n[![FastAPI](https://img.shields.io/badge/FastAPI-0.115+-009688.svg)](https://fastapi.tiangolo.com/)\n[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-14+-336791.svg)](https://www.postgresql.org/)\n\n\u003c!-- Project Badges --\u003e\n[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)\n[![Code of Conduct](https://img.shields.io/badge/code%20of-conduct-ff69b4.svg)](CODE_OF_CONDUCT.md)\n[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/getsynkora/synkora-ai/graphs/commit-activity)\n\n**The open-source AI agent platform your team actually owns.**\n\nBuild and deploy AI agents across Slack, WhatsApp, Teams, web widget, and REST API.\nMulti-tenant. API-first. Self-host on your infrastructure. Bring your own LLM keys. MIT licensed.\n\n[Features](#key-features) •\n[Quick Start](#quick-start) •\n[Documentation](#documentation) •\n[Contributing](#contributing) •\n[Community](#support--community)\n\n\u003c/div\u003e\n\n---\n\n## Overview\n\nSynkora is an open-source platform for teams building and deploying AI agents. Unlike frameworks like LangChain or CrewAI that give you building blocks, Synkora gives you the entire platform — web UI, multi-tenant workspaces, RAG knowledge bases, multi-channel deployment, billing, scheduled tasks, and observability — ready to self-host or run on Synkora Cloud.\n\n**Why Synkora?**\n- **Platform, not a framework** - No infrastructure code to write. Deploy agents from a web UI or REST API in minutes\n- **You own it** - Self-host on your own servers. MIT licensed. No vendor lock-in, no phone-home\n- **Your LLM keys** - Use OpenAI, Anthropic, Google, or any provider via LiteLLM. Switch anytime\n- **Multi-tenant by design** - Per-tenant isolation, API keys, quotas, and model configs out of the box\n- **Deploy everywhere** - Slack, WhatsApp, Teams, Telegram, web widget, REST API — from one platform\n\n\n## See It In Action\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"50%\"\u003e\n      \u003cstrong\u003ePersonal AI Assistant\u003c/strong\u003e\u003cbr\u003e\u003cbr\u003e\n      \u003cvideo src=\"https://github.com/user-attachments/assets/ce64d4bc-c47e-48f6-af2d-9287d6b3b836\" controls width=\"100%\"\u003e\n        Your browser does not support the video tag.\n      \u003c/video\u003e\n      \u003cbr\u003e\u003cem\u003eA personal AI assistant that can do everything — browsing, coding, scheduling, and more.\u003c/em\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"50%\"\u003e\n      \u003cstrong\u003ePlatform Engineer \u0026 Agents\u003c/strong\u003e\u003cbr\u003e\u003cbr\u003e\n      \u003cvideo src=\"https://github.com/user-attachments/assets/c27ebb0c-1742-4897-9f7f-eaa112d66470\" controls width=\"100%\"\u003e\n        Your browser does not support the video tag.\n      \u003c/video\u003e\n      \u003cbr\u003e\u003cem\u003eManaging agents and platform operations with the Platform Engineer Agent.\u003c/em\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"50%\"\u003e\n      \u003cstrong\u003eDaily AI News Reporter — Setup\u003c/strong\u003e\u003cbr\u003e\u003cbr\u003e\n      \u003cvideo src=\"https://github.com/user-attachments/assets/a590dc34-3744-4359-9254-357e0d95d5ee\" controls width=\"100%\"\u003e\n        Your browser does not support the video tag.\n      \u003c/video\u003e\n      \u003cbr\u003e\u003cem\u003eSetting up a Daily AI News Reporter agent from the chat interface.\u003c/em\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"50%\"\u003e\n      \u003cstrong\u003eDaily AI News Reporter — Email Newsletter Demo\u003c/strong\u003e\u003cbr\u003e\u003cbr\u003e\n      \u003cvideo src=\"https://github.com/user-attachments/assets/4001f0a0-f82d-453e-9b0c-f6e16afd514d\" controls width=\"100%\"\u003e\n        Your browser does not support the video tag.\n      \u003c/video\u003e\n      \u003cbr\u003e\u003cem\u003eWatch the Daily AI News Reporter automatically send a personalized AI news email digest.\u003c/em\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\n## Key Features\n\n### What You Can Build\n- **Customer support agents** - 24/7 query handling from your knowledge base, with HITL escalation to humans\n- **Engineering assistants** - Code review, bug triage, and documentation via GitHub, GitLab, and Sentry\n- **Marketing automation** - Content drafting, campaign analysis, and social scheduling\n- **Data agents** - Natural language queries over your databases, automated reports, anomaly detection\n- **Internal copilots** - HR, finance, and ops agents connected to your existing tools via 50+ integrations\n- **Personal AI assistants** - General-purpose assistants with voice, browser control, and messaging integrations\n\n### Core Capabilities\n- **Multi-Provider LLM Support**: OpenAI, Anthropic, Google, and more via LiteLLM — use your own keys\n- **Knowledge Bases**: Vector-based knowledge management with Qdrant, Pinecone, and Elasticsearch\n- **Custom Tools**: 50+ pre-built integrations plus extensible tool system\n- **Real-time Chat**: WebSocket-based chat interface with streaming responses\n- **MCP Servers**: Model Context Protocol server integration\n- **Voice Services**: ElevenLabs integration for voice interactions\n\n### Enterprise Features\n- **Multi-Tenant Architecture**: Complete tenant isolation with role-based access control\n- **Billing \u0026 Subscriptions**: Stripe integration with plan-based resource limits\n- **SSO \u0026 Authentication**: Okta SSO, SAML, and social authentication\n- **Messaging Bots**: Slack, Microsoft Teams, and WhatsApp bot integrations\n- **Data Sources**: Connect to databases, APIs, and external services\n- **Widgets**: Embeddable chat widgets for websites\n- **Observability**: Langfuse integration for LLM observability and analytics\n\n### Developer Experience\n- **RESTful API**: Comprehensive FastAPI-based API with OpenAPI documentation\n- **Agent API Keys**: Per-agent API keys for secure access\n- **Custom Domains**: Configure custom domains for agents\n- **Activity Logs**: Comprehensive audit trail\n- **Usage Statistics**: Track usage and performance metrics\n\n\n## Architecture\n\n\u003e For a comprehensive technical analysis, see [ARCHITECTURE.md](ARCHITECTURE.md)\n\n### System Architecture\n\n```\n                    ┌─────────────────────────────────────────┐\n                    │              Load Balancer                │\n                    └────────────────┬────────────────────────┘\n                                     │\n              ┌──────────────────────┼──────────────────────┐\n              │                      │                      │\n    ┌─────────▼─────────┐ ┌─────────▼─────────┐ ┌─────────▼─────────┐\n    │   FastAPI Pod 1    │ │   FastAPI Pod 2    │ │   FastAPI Pod N    │\n    │  (API + WebSocket) │ │  (API + WebSocket) │ │  (API + WebSocket) │\n    └─────────┬─────────┘ └─────────┬─────────┘ └─────────┬─────────┘\n              │                      │                      │\n    ┌─────────▼──────────────────────▼──────────────────────▼─────────┐\n    │                        Redis (Pub/Sub + Cache)                   │\n    └─────────┬──────────────────────┬──────────────────────┬─────────┘\n              │                      │                      │\n    ┌─────────▼─────────┐ ┌─────────▼─────────┐ ┌─────────▼─────────┐\n    │  Celery Workers    │ │  Celery Beat       │ │  Bot Workers       │\n    │  (default+billing) │ │  (scheduler)       │ │  (Slack/Telegram)  │\n    └─────────┬─────────┘ └───────────────────┘ └─────────┬─────────┘\n              │                                            │\n    ┌─────────▼──────────────────────────────────────────-▼─────────┐\n    │  synkora-ml (embeddings + reranking)                           │\n    │  synkora-scraper (browser automation + app-store scraping)     │\n    └────────────────────────────────────────────────────────────────┘\n              │\n    ┌─────────▼──────────────────────────────────────────────────────┐\n    │                                                                 │\n    │  PostgreSQL (pgvector)  │  Qdrant  │  MinIO/S3  │  Elasticsearch│\n    └─────────────────────────────────────────────────────────────────┘\n```\n\n### Architecture Scorecard\n\n| Dimension | Rating | Notes |\n|-----------|--------|-------|\n| **Code Quality** | A | Clean, consistent, well-documented |\n| **Modularity** | A | Domain-separated layers, composable mixins, declarative routing |\n| **Design Patterns** | A | Circuit breaker, DLQ, pub/sub, factory, strategy, middleware chain |\n| **Security** | A+ | Defense-in-depth: CSRF, CSP, rate limiting, input sanitization, encryption at rest |\n| **Database Performance** | A | Async + sync engines, pool tuning, lazy loading, statement timeouts |\n| **Horizontal Scaling** | A | Stateless API, distributed WebSocket, distributed cache, queue separation |\n| **Availability** | A | K8s probes, circuit breakers, graceful shutdown, dead-letter queue |\n| **Load Testing** | A | k6 suite with mock LLM mode, CI integration, comprehensive scenarios |\n\n### Tech Stack\n\n**Backend:**\n- **Framework**: FastAPI (Python 3.11+)\n- **Database**: PostgreSQL 14+ with pgvector extension\n- **Cache**: Redis 7+\n- **Vector DB**: Qdrant, Pinecone, Elasticsearch\n- **Task Queue**: Celery with Redis broker\n- **ORM**: SQLAlchemy 2.0\n- **Migrations**: Alembic\n- **Validation**: Pydantic v2\n\n**Frontend:**\n- **Framework**: Next.js 15.1 with App Router\n- **UI**: React 19, Tailwind CSS\n- **State Management**: Zustand\n- **HTTP Client**: Axios\n- **Forms**: React Hook Form with Zod validation\n\n**Infrastructure:**\n- **Containerization**: Docker \u0026 Docker Compose\n- **Orchestration**: Kubernetes (Helm charts included)\n- **Storage**: MinIO (S3-compatible) or AWS S3\n- **Observability**: Langfuse for LLM tracking\n\n\n## Project Structure\n\n```\nsynkora/\n├── api/                    # Backend API (FastAPI)\n│   ├── src/\n│   │   ├── config/        # Configuration management\n│   │   ├── core/          # Core functionality (database, cache, websocket)\n│   │   ├── models/        # SQLAlchemy models\n│   │   ├── schemas/       # Pydantic schemas\n│   │   ├── controllers/   # API route handlers\n│   │   ├── services/      # Business logic\n│   │   ├── middleware/    # Custom middleware\n│   │   └── tasks/         # Celery tasks\n│   ├── migrations/        # Alembic database migrations\n│   ├── tests/             # Test suite\n│   └── pyproject.toml     # Python dependencies\n│\n├── web/                    # Frontend (Next.js)\n│   ├── app/               # Next.js App Router pages\n│   ├── components/        # React components\n│   ├── lib/               # Utilities and API client\n│   ├── hooks/             # Custom React hooks\n│   └── types/             # TypeScript type definitions\n│\n├── services/\n│   ├── ml/                # ML microservice (embeddings + reranking)\n│   └── scraper/           # Scraper microservice (browser + app-store)\n│\n├── docker-compose.yml      # Local development environment\n├── helm/                   # Kubernetes Helm charts\n└── docs/                   # Documentation\n```\n\n\n## System Requirements\n\nSynkora runs ~20 Docker containers. The stack includes Elasticsearch (2 GB hard cap), Redis (2 GB configured), a sentence-transformers ML service, Playwright-based scraper, ClickHouse, and multiple Celery workers. Size accordingly.\n\n### Hardware\n\n| | Minimum | Recommended |\n|---|---------|-------------|\n| **RAM** | 16 GB | 32 GB |\n| **CPU** | 4 cores | 8+ cores |\n| **Free disk** | 40 GB | 100 GB |\n| **OS** | macOS 12+, Ubuntu 20.04+, Debian 11+, Fedora 36+, RHEL 8+ | — |\n\n\u003e **Why so much RAM?** Elasticsearch alone is hard-capped at 2 GB and won't start on machines with less free memory. Redis is configured for up to 2 GB. The ML service loads sentence-transformer models (~1–2 GB). Running everything below 8 GB will result in OOM kills.\n\n### Per-Service Resource Breakdown\n\n| Service | RAM (idle) | Purpose |\n|---------|-----------|---------|\n| `elasticsearch` | ~1.5 GB | Full-text search (hard limit: 2 GB) |\n| `redis` | up to 2 GB | Cache, Celery broker, pub/sub |\n| `synkora-ml` | ~1–2 GB | Embeddings + reranking (sentence-transformers) |\n| `synkora-scraper` | ~512 MB | Browser automation (Playwright + Chromium) |\n| `langfuse-clickhouse` | ~512 MB | LLM observability analytics |\n| `langfuse-web` + `langfuse-worker` | ~512 MB | Langfuse UI + background jobs |\n| `api` | ~512 MB | FastAPI application server |\n| `celery-worker` (×4 workers) | ~1.5 GB | Background tasks (default, agents, billing, notifications) |\n| `postgres` + `postgres-test` | ~384 MB | PostgreSQL with pgvector |\n| `qdrant` | ~256 MB | Vector database |\n| `minio` | ~256 MB | S3-compatible object storage |\n| `bot-worker`, `celery-beat`, `docs` | ~384 MB | Slack bots, scheduler, docs |\n| **Total** | **~10–12 GB** | Plus OS + Docker daemon (~2–3 GB overhead) |\n\n### Required Software\n\n| Tool | Version | Required for |\n|------|---------|-------------|\n| Docker Engine | 24+ | All services |\n| Docker Compose v2 | 2.20+ | Orchestration (`docker compose`, not `docker-compose`) |\n| Node.js | 20+ | Frontend (local dev mode only) |\n| pnpm | 8+ | Frontend (local dev mode only) |\n| openssl | any | Secret key generation during install |\n\n\u003e The `./install.sh` script checks all of the above automatically and will offer to install Docker if it's missing.\n\n### Ports Used\n\n| Port | Service |\n|------|---------|\n| `3005` | Web frontend |\n| `5001` | API (FastAPI) |\n| `3001` | Langfuse UI |\n| `9001` | MinIO console |\n| `9000` | MinIO S3 API |\n| `6333` | Qdrant HTTP |\n| `9200` | Elasticsearch |\n| `5438` | PostgreSQL (main) |\n| `6379` | Redis (localhost only) |\n| `8080` | Bot worker health check |\n\nAll ports are configurable in `docker-compose.yml`. The installer checks for conflicts before starting.\n\n---\n\n## Cost Efficiency\n\nFive complementary optimizations reduce LLM API costs. Savings figures are either derived from provider-published pricing or from the benchmark script — no figures are estimated or invented.\n\n| Optimization | Mechanism | Typical Savings | Notes |\n|---|---|---|---|\n| Anthropic Prompt Caching | `cache_control` injected automatically on system prompt + tools for supported models | ~90% on cached prompt tokens (cache reads billed at 10% of input rate — [Anthropic pricing](https://www.anthropic.com/pricing)) | Automatic — no config needed. LLM still runs fresh; output quality unchanged. |\n| OpenAI Automatic Caching | Provider-managed prefix caching; Synkora tracks `cached_tokens` in usage logs | 50% on cached prefix tokens ([OpenAI pricing](https://platform.openai.com/docs/guides/prompt-caching)) | Automatic at provider level. No Synkora configuration required. |\n| Response Cache | Redis exact-match cache with 6 correctness gates; bypasses LLM entirely on cache hit | 100% cost saving per cache-hit call | Opt-in: requires `enable_response_cache: true` in agent performance config. Only activates for deterministic calls (temp ≤ 0.1, no tool context, no time-sensitive content). |\n| Cost-Opt Routing | Routes queries to the cheapest configured model that passes a complexity gate | Depends on model price gap — no universal figure | `cost_opt` mode in `model_router.py`. Savings vary entirely by which models are configured; no benchmark figure is claimed. |\n| Batch API | Submits background LLM jobs via Anthropic/OpenAI batch endpoints via Celery | 50% discount on batch calls ([Anthropic](https://docs.anthropic.com/en/api/messages-batch) / [OpenAI](https://platform.openai.com/docs/guides/batch) published pricing) | Applies to scheduled/async tasks only, not real-time chat. |\n\n### Benchmark Results\n\n\u003e Generated by `api/tests/benchmarks/cost_benchmark.py`. API-dependent tests require `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` — run locally with real keys for live latency numbers.\n\n**Cost calculation** — pricing resolution order: DB routing-rules override → `_BUILTIN_COSTS` → `MODEL_COMPARISON_DATA` → `None` (unknown).\n\n| Model | In tokens | Out tokens | Cache read | Cache write | Input rate | Est. cost (USD) |\n|-------|----------:|----------:|-----------:|------------:|:----------:|----------------:|\n| `claude-haiku-4-5-20251001` | 1,000 | 500 | 0 | 0 | `$0.00025/1k` | `$0.00275000` |\n| `gpt-4o` | 1,000 | 200 | 0 | 0 | `$0.00500/1k` | `$0.00700000` |\n| `gpt-4o-mini` | 2,000 | 400 | 0 | 0 | `$0.00500/1k` | `$0.01400000` |\n| `claude-haiku-4-5-20251001` (with cache) | 500 | 200 | 300 | 100 | `$0.00025/1k` | `$0.00106375` |\n| `claude-sonnet-4-6` (with cache) | 1,000 | 300 | 500 | 200 | `$0.00300/1k` | `$0.00630000` |\n| Unknown model | 1,000 | 200 | 0 | 0 | `unknown` | `—` |\n\n**Anthropic prompt-cache savings** — 2,000-token system prompt, 100 requests/day:\n\n| Model | Daily cost (no cache) | Daily cost (with cache) | Saving |\n|-------|-----------------------:|------------------------:|-------:|\n| `claude-haiku-4-5-20251001` | `$0.050000` | `$0.005575` | **88.9%** |\n\n**Response cache correctness gates** — six gates prevent stale hits:\n\n| Gate | Condition | Result |\n|------|-----------|--------|\n| Opt-in | `temp=0.0`, role=`user` | ✓ cacheable |\n| High temperature | `temp=0.8`, role=`user` | ✓ skipped |\n| Tool context | `temp=0.0`, role=`tool` | ✓ skipped |\n| Time-sensitive | \"what is the current price?\" | ✓ skipped |\n\n**Cache key stability** — cache is automatically busted when the agent is edited:\n\n| Scenario | Same key? |\n|----------|:---------:|\n| Identical inputs | ✓ yes |\n| Agent re-saved (`agent_updated_at` changed) | ✓ different |\n| System prompt edited | ✓ different |\n\n**Unit tests:** `23/23 passed` — `test_llm_cost_service.py` (10) + `test_llm_response_cache.py` (13).\n\n**Implementation files:**\n\n| Feature | File |\n|---------|------|\n| Cost calculation + analytics API | `api/src/services/billing/llm_cost_service.py` |\n| Per-call token usage persistence (fire-and-forget) | `api/src/services/billing/llm_cost_service.py` |\n| LLM response cache (Redis, 6 gates, NX write, 50 KB cap, 1 h TTL) | `api/src/services/cache/llm_response_cache.py` |\n| DB model (`llm_token_usage`) | `api/src/models/llm_token_usage.py` |\n| Migration | `api/migrations/versions/20260424_0001_add_llm_token_usage.py` |\n\n### Running Benchmarks\n\n```bash\ncd api \u0026\u0026 python -m tests.benchmarks.cost_benchmark --provider anthropic --api-key $ANTHROPIC_API_KEY\ncd api \u0026\u0026 python -m tests.benchmarks.cost_benchmark --provider openai --api-key $OPENAI_API_KEY\n```\n\n### Comparison vs Other Platforms\n\n\u003e **Research methodology:** Each platform was investigated against its official docs, GitHub issues/PRs, and changelogs as of April 2026. Every cell is sourced — see footnotes. Legend: ✅ Native built-in feature · ⚡ Partial (manual setup or limited scope) · ❌ Not supported\n\n| Feature | Synkora | Dify | Flowise | LangFlow | n8n |\n|---------|:-------:|:----:|:-------:|:--------:|:---:|\n| **Anthropic prompt caching** (`cache_control`) | ✅ | ⚡ [¹](#fn1) | ❌ [²](#fn2) | ❌ [³](#fn3) | ⚡ [⁴](#fn4) |\n| **LLM response cache** (Redis exact-match) | ✅ | ⚡ [⁵](#fn5) | ✅ [⁶](#fn6) | ❌ [⁷](#fn7) | ⚡ [⁸](#fn8) |\n| **Smart model routing** (complexity/cost-based) | ✅ | ⚡ [⁹](#fn9) | ⚡ [⁹](#fn9) | ⚡ [¹⁰](#fn10) | ⚡ [⁹](#fn9) |\n| **Batch API** (Anthropic / OpenAI async 50% discount) | ✅ | ❌ [¹¹](#fn11) | ❌ [¹²](#fn12) | ❌ [¹³](#fn13) | ⚡ [¹⁴](#fn14) |\n| **Per-call token \u0026 USD cost tracking** | ✅ | ✅ [¹⁵](#fn15) | ⚡ [¹⁶](#fn16) | ⚡ [¹⁷](#fn17) | ⚡ [¹⁸](#fn18) |\n\n#### Footnotes\n\n\u003ca name=\"fn1\"\u003e\u003c/a\u003e**¹ Dify prompt caching** — Anthropic only, via official plugin v0.3.10 (Apr 2026). Six opt-in per-call parameters (`prompt_caching_system_message`, `prompt_caching_tool_definitions`, etc.) in the LLM node UI. OpenAI prefix caching is transparent at provider level (Dify does nothing special). Gemini explicitly declined as \"not planned\" ([issue #2121](https://github.com/langgenius/dify-official-plugins/issues/2121)). Known bug: Haiku 4.5 cache shows 0% ([issue #1946](https://github.com/langgenius/dify-official-plugins/issues/1946)).\n\n\u003ca name=\"fn2\"\u003e\u003c/a\u003e**² Flowise prompt caching** — No `cache_control` implementation. Open feature request [#4634](https://github.com/FlowiseAI/Flowise/issues/4634) with no maintainer commitment. GitHub code search returns 0 matches for `cache_control` in the repo.\n\n\u003ca name=\"fn3\"\u003e\u003c/a\u003e**³ LangFlow prompt caching** — No native support. A LangFlow blog post titled \"Prompt Caching in LLMs\" is educational only — it describes no LangFlow feature. LangChain's `AnthropicPromptCachingMiddleware` exists but is not exposed as a built-in LangFlow node.\n\n\u003ca name=\"fn4\"\u003e\u003c/a\u003e**⁴ n8n prompt caching** — Anthropic `cache_control` (4-breakpoint strategy) was merged for the internal AI Workflow Builder ([PR #20484](https://github.com/n8n-io/n8n/pull/20484), Oct 2025). The user-facing Anthropic Chat Model node PR ([#22318](https://github.com/n8n-io/n8n/pull/22318)) was still open as of Apr 2026.\n\n\u003ca name=\"fn5\"\u003e\u003c/a\u003e**⁵ Dify response cache** — No generic Redis-backed LLM output cache. The nearest equivalent is **Annotation Reply**: a manually curated Q\u0026A store with vector-similarity matching that short-circuits LLM calls. A workflow-level caching feature request ([#23598](https://github.com/langgenius/dify/issues/23598)) was closed \"not planned\" Sep 2025.\n\n\u003ca name=\"fn6\"\u003e\u003c/a\u003e**⁶ Flowise response cache** — Documented, shipped feature. LangChain cache layer with four backends: InMemory, Redis, Upstash Redis, Momento. Connected to LLM nodes as an optional \"Cache\" input. ([docs](https://docs.flowiseai.com/integrations/langchain/cache))\n\n\u003ca name=\"fn7\"\u003e\u003c/a\u003e**⁷ LangFlow response cache** — No LLM output deduplication cache exists. The in-memory cache is for internal flow-graph state (component outputs within a run), not LLM response deduplication. Redis is documented as \"experimental\" for flow caching only.\n\n\u003ca name=\"fn8\"\u003e\u003c/a\u003e**⁸ n8n response cache** — No first-class cache node. Achievable via Redis Vector Store node + manual workflow logic ([community template](https://n8n.io/workflows/10887-reduce-llm-costs-with-semantic-caching-using-redis-vector-store-and-huggingface/)), but requires authoring, not a one-click setting.\n\n\u003ca name=\"fn9\"\u003e\u003c/a\u003e**⁹ Dify / Flowise / n8n model routing** — All three provide routing primitives (If/Else nodes, Condition nodes, Switch nodes) that can be manually wired to route to different models. None has a built-in automatic complexity classifier that routes to a cheaper model. n8n community has a [workflow template](https://n8n.io/workflows/4237-dynamic-ai-model-router-for-query-optimization-with-openrouter/) using OpenRouter for this.\n\n\u003ca name=\"fn10\"\u003e\u003c/a\u003e**¹⁰ LangFlow model routing** — Shipped a real **LLM Router / LLM Selector** component in v1.7 ([PR #5475](https://github.com/langflow-ai/langflow/pull/5475), Jan 2025) that uses OpenRouter's model-spec API and a judge LLM to pick among attached models by quality/speed/cost/balanced. Requires OpenRouter; incurs a live LLM judgment call per routing decision.\n\n\u003ca name=\"fn11\"\u003e\u003c/a\u003e**¹¹ Dify batch API** — Explicitly declined as \"not planned\" ([issue #13126](https://github.com/langgenius/dify/issues/13126), closed Mar 18, 2025).\n\n\u003ca name=\"fn12\"\u003e\u003c/a\u003e**¹² Flowise batch API** — No evidence of Anthropic Message Batches or OpenAI Batch API integration. The `batchSize` field in the OpenAI node is LangChain-internal concurrency (embedding chunking), not the provider batch endpoint. Async response confirmed \"not currently supported\" ([discussion #1212](https://github.com/FlowiseAI/Flowise/discussions/1212)).\n\n\u003ca name=\"fn13\"\u003e\u003c/a\u003e**¹³ LangFlow batch API** — No support. LangFlow's `/v1/flows/batch/` endpoint is for creating/deleting multiple flow definitions, not for submitting LLM calls to provider batch APIs.\n\n\u003ca name=\"fn14\"\u003e\u003c/a\u003e**¹⁴ n8n batch API** — Anthropic batch API is accessible via an HTTP Request node using a [community workflow template](https://n8n.io/workflows/3409-batch-process-prompts-with-anthropic-claude-api/). No dedicated node. OpenAI Batch API requires the same workaround.\n\n\u003ca name=\"fn15\"\u003e\u003c/a\u003e**¹⁵ Dify token \u0026 cost tracking** — Per-node: `execution_metadata.total_tokens`, `total_price` (USD), `currency` in the `node_finished` SSE event ([issue #8873](https://github.com/langgenius/dify/issues/8873)). Visible in Run History / Debug view. Cache-aware: `cache_creation_input_tokens` (1.25×) and `cache_read_input_tokens` (0.1×) tracked in Anthropic plugin. Caveat: shows $0 for OpenAI-compatible third-party models without `PLUGIN_BASED_TOKEN_COUNTING_ENABLED=true`; fixed in v1.9.2+.\n\n\u003ca name=\"fn16\"\u003e\u003c/a\u003e**¹⁶ Flowise token \u0026 cost tracking** — Token data is generated internally but only surfaced via third-party observability integrations (Langfuse, LangSmith, LunaryAI, LangWatch, Arize, Phoenix, Opik). No native per-call USD cost display in Flowise UI. Non-OpenAI providers (Gemini, DeepSeek) have incomplete cost data in traces ([Langfuse issue #8293](https://github.com/langfuse/langfuse/issues/8293)).\n\n\u003ca name=\"fn17\"\u003e\u003c/a\u003e**¹⁷ LangFlow token \u0026 cost tracking** — Token counts added to the inspection UI in v1.8 ([blog](https://www.langflow.org/blog/langflow-1-8)) and available in the OpenAI Responses API path. USD cost requires Langfuse / LangSmith / LangWatch integration; not calculated natively. Earlier feature request ([#3261](https://github.com/langflow-ai/langflow/issues/3261)) was closed \"not planned\" Nov 2024.\n\n\u003ca name=\"fn18\"\u003e\u003c/a\u003e**¹⁸ n8n token \u0026 cost tracking** — Token data is in the raw model output for providers that return it (OpenAI, Anthropic, Google) but not displayed natively in the n8n execution UI. Per-call tracking and a cost dashboard require a custom subworkflow ([community template](https://n8n.io/workflows/7398-llm-usage-tracker-and-cost-monitor-with-node-level-analytics-v2/)).\n\n---\n\n## Quick Start\n\n### One-Line Install (Recommended)\n\nRun the interactive installer — it handles everything: prerequisite checks, `.env` generation, database migrations, seeding, and starting all services.\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/getsynkora/synkora-ai/main/get.sh | bash\n```\n\nInstalls into `~/synkora-ai` by default. To choose a different directory:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/getsynkora/synkora-ai/main/get.sh | \\\n  SYNKORA_INSTALL_DIR=~/my-synkora bash\n```\n\nFor CI/CD and server deployments (no prompts):\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/getsynkora/synkora-ai/main/get.sh | \\\n  SYNKORA_ADMIN_EMAIL=admin@example.com \\\n  SYNKORA_ADMIN_PASSWORD=securepass123 \\\n  SYNKORA_LLM_PROVIDER=openai \\\n  SYNKORA_LLM_API_KEY=sk-... \\\n  bash -s -- --non-interactive\n```\n\nThe installer will:\n1. Check system resources (RAM, CPU, disk) and warn if below minimums\n2. Verify Docker, openssl, Node.js/pnpm are present (and offer to install Docker if missing)\n3. Detect existing installations and offer Upgrade / Reset / Quit\n4. Collect admin account details, LLM provider key, and optional Slack bot tokens\n5. Generate all `.env` files with secure random secrets\n6. Pull images, start services, run migrations, seed plans/roles/template agents\n7. Print a summary with all URLs and management commands\n\n### Manual Setup (Docker Compose)\n\nIf you prefer to set up manually:\n\n```bash\n# 1. Copy and edit environment files\ncp api/.env.example api/.env\n# Edit api/.env with your configuration\n\n# 2. Start all services\ndocker compose up -d\n\n# 3. Initialize the database\ndocker compose exec api alembic upgrade head\ndocker compose exec api python create_super_admin.py\ndocker compose exec api python seed_platform_config.py\n```\n\n### Prerequisites\n\n- Docker and Docker Compose v2\n- Node.js 20+ and pnpm (for local frontend development)\n- Python 3.11+ and uv (for local backend development)\n\n### Local Development\n\n#### Backend Setup\n\n```bash\ncd api\n\n# Install dependencies (using uv)\nuv sync\n\n# Or using pip\npip install -e .\n\n# Set up environment\ncp .env.example .env\n# Edit .env with your configuration\n\n# Initialize database\nalembic upgrade head\npython create_super_admin.py\npython seed_platform_config.py\n\n# Run development server\nuvicorn src.app:app --reload --host 0.0.0.0 --port 5001\n```\n\n#### Frontend Setup\n\n```bash\ncd web\n\n# Install dependencies\npnpm install\n\n# Set up environment\ncp .env.example .env.local\n# Edit .env.local if needed\n\n# Run development server\npnpm dev\n```\n\n\n## Configuration\n\n### Environment Variables\n\n#### Backend (`api/.env`)\n```bash\n# Database\nDATABASE_URL=postgresql://synkora:synkora@localhost:5432/synkora\n\n# Redis\nREDIS_URL=redis://localhost:6379/0\n\n# Security\nSECRET_KEY=your-secret-key\nJWT_SECRET_KEY=your-jwt-secret\nENCRYPTION_KEY=your-encryption-key\n\n# Application\nAPP_ENV=development\nAPI_HOST=0.0.0.0\nAPI_PORT=5001\n\n# Storage\nSTORAGE_PROVIDER=s3\nAWS_ACCESS_KEY_ID=minioadmin\nAWS_SECRET_ACCESS_KEY=minioadmin\nAWS_ENDPOINT_URL=http://localhost:9000\nAWS_BUCKET_NAME=synkora-storage\n\n# LLM Providers (optional)\nOPENAI_API_KEY=sk-...\nANTHROPIC_API_KEY=sk-ant-...\n\n# Langfuse (optional)\nLANGFUSE_PUBLIC_KEY=pk-...\nLANGFUSE_SECRET_KEY=sk-...\nLANGFUSE_HOST=http://localhost:3001\n```\n\n#### Frontend (`web/.env.local`)\n```bash\nNEXT_PUBLIC_API_URL=http://localhost:5001\nNEXT_PUBLIC_APP_URL=http://localhost:3005\n```\n\n\n## Documentation\n\n- [Architecture Report](ARCHITECTURE.md) - Comprehensive technical analysis, design patterns, and scorecard\n- [API Documentation](api/README.md) - Backend API details and setup\n- [Frontend Documentation](web/README.md) - Frontend setup and development\n- [Contributing Guidelines](CONTRIBUTING.md) - How to contribute\n- [Security Policy](SECURITY.md) - Security guidelines and reporting\n- [Changelog](CHANGELOG.md) - Version history and changes\n- [Load Testing Guide](api/tests/load/README.md) - k6 load testing suite documentation\n\n\n## Testing\n\n### CI/CD Pipeline\n\nOur CI/CD pipeline runs on every push and pull request:\n\n| Workflow | Description | Status |\n|----------|-------------|--------|\n| **Main CI** | Orchestrates all tests | [![CI Pipeline](https://github.com/getsynkora/synkora-ai/actions/workflows/main-ci.yml/badge.svg)](https://github.com/getsynkora/synkora-ai/actions/workflows/main-ci.yml) |\n| **API Tests** | Python unit \u0026 integration tests | [![API Tests](https://github.com/getsynkora/synkora-ai/actions/workflows/api-tests.yml/badge.svg)](https://github.com/getsynkora/synkora-ai/actions/workflows/api-tests.yml) |\n| **Web Tests** | Frontend linting \u0026 type checks | [![Web Tests](https://github.com/getsynkora/synkora-ai/actions/workflows/web-tests.yml/badge.svg)](https://github.com/getsynkora/synkora-ai/actions/workflows/web-tests.yml) |\n| **Style Check** | Code formatting \u0026 linting | [![Style](https://github.com/getsynkora/synkora-ai/actions/workflows/style.yml/badge.svg)](https://github.com/getsynkora/synkora-ai/actions/workflows/style.yml) |\n| **Docker Build** | Container build validation | [![Docker](https://github.com/getsynkora/synkora-ai/actions/workflows/docker-build.yml/badge.svg)](https://github.com/getsynkora/synkora-ai/actions/workflows/docker-build.yml) |\n\n### Code Coverage\n\n[![Coverage](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/rajuniit/6adfe45792942ae62d18c5e89128498b/raw/coverage-badge.json)](https://github.com/getsynkora/synkora-ai/actions/workflows/api-tests.yml)\n\nCoverage reports are generated for every pull request with inline annotations.\n\n### Backend Tests\n```bash\ncd api\npytest                              # Run all tests\npytest --cov=src                    # With coverage\npytest --cov=src --cov-report=html  # Generate HTML coverage report\npytest tests/unit/                  # Unit tests only\npytest tests/integration/           # Integration tests only\npytest -v -k \"test_name\"            # Run specific test\npytest -x                           # Stop on first failure\n```\n\n### Frontend Tests\n```bash\ncd web\npnpm test                # Run tests\npnpm type-check          # TypeScript type checking\npnpm lint                # ESLint\n```\n\n### Running Tests Locally with Act\n\nYou can run GitHub Actions locally using [act](https://github.com/nektos/act):\n\n```bash\n# Install act (macOS)\nbrew install act\n\n# Run API tests locally\nact workflow_dispatch -W .github/workflows/api-tests.yml -j test --matrix python-version:3.11 -P ubuntu-latest=catthehacker/ubuntu:act-latest --container-architecture linux/amd64\n```\n\n\n## Development\n\n### Database Migrations\n\n```bash\n# Create a new migration\ncd api\nalembic revision --autogenerate -m \"Description\"\n\n# Apply migrations\nalembic upgrade head\n\n# Rollback\nalembic downgrade -1\n```\n\n### Code Quality\n\n**Backend:**\n```bash\ncd api\nruff format .           # Format code\nruff check .            # Lint code\nbasedpyright            # Type checking\n```\n\n**Frontend:**\n```bash\ncd web\npnpm lint               # ESLint\npnpm type-check         # TypeScript\n```\n\n### Adding Dependencies\n\n**Backend:**\n```bash\ncd api\nuv add package-name              # Production dependency\nuv add --dev package-name        # Development dependency\n```\n\n**Frontend:**\n```bash\ncd web\npnpm add package-name            # Production dependency\npnpm add -D package-name         # Development dependency\n```\n\n\n## Deployment\n\n### Docker Compose\n\n```bash\n# Build all images\ndocker-compose build\n\n# Start all services\ndocker-compose up -d\n```\n\n### Kubernetes\n\nHelm charts are provided in the `helm/` directory:\n\n```bash\n# Install\nhelm install synkora ./helm/synkora\n\n# Upgrade\nhelm upgrade synkora ./helm/synkora\n\n# Uninstall\nhelm uninstall synkora\n```\n\n\n## Security\n\n\u003e Detailed in [ARCHITECTURE.md — Security](ARCHITECTURE.md#security)\n\n- **Authentication**: JWT with token blacklisting, version tracking, and secure sessionStorage\n- **Authorization**: Role-based access control (RBAC) with fine-grained permissions and tenant isolation\n- **CSRF Protection**: Server-side token validation in Redis with session binding and fail-closed design\n- **Security Headers**: CSP with nonces, HSTS with preload, X-Frame-Options DENY, Permissions-Policy\n- **Input Sanitization**: 60+ XSS pattern detection covering HTML5 event handlers\n- **Encryption**: Fernet encryption at rest for API keys, OAuth tokens, and secrets\n- **Rate Limiting**: Redis-backed distributed rate limiting with per-endpoint configuration\n- **SSO**: Okta and SAML support for enterprise authentication\n\n\n## Monitoring \u0026 Observability\n\n- **Langfuse**: LLM observability, tracing, and analytics\n- **Prometheus Metrics**: `/metrics` endpoint for scraping (request counts, latencies, LLM usage)\n- **Performance Stats**: `/api/v1/stats/performance` for connection pools, circuit breakers\n- **Health Checks**: `/health` endpoint for liveness probes\n- **Logging**: Structured JSON logging with configurable levels\n\n\n## Performance \u0026 Scalability\n\n\u003e Detailed in [ARCHITECTURE.md — Scalability](ARCHITECTURE.md#scalability--horizontal-scaling)\n\n- **Stateless API**: All state in PostgreSQL/Redis, enabling horizontal pod scaling\n- **Distributed WebSocket**: Redis pub/sub for cross-pod message delivery with source-pod deduplication\n- **Distributed Cache**: Cross-pod cache invalidation via Redis pub/sub\n- **Circuit Breakers**: Full state machine (CLOSED/OPEN/HALF_OPEN) with decorator API\n- **Connection Pooling**: 50+25 DB connections, 200 Redis connections, pooled vector DB clients\n- **Celery Queue Separation**: Default, email, notifications, agents, billing queues with dedicated workers\n- **Streaming Uploads**: Multipart S3 uploads for large files without memory overhead\n- **Async Database**: Dual engine architecture (asyncpg for FastAPI, psycopg2 for Celery)\n\n### Load Test Results (Stress Test @ 300 VUs)\n\n| Metric | Target | Achieved | Status |\n|--------|--------|----------|--------|\n| Health check p95 | \u003c 100ms | 42ms | Pass |\n| List agents p95 | \u003c 500ms | 198ms | Pass |\n| Chat stream p95 | \u003c 5s | 2.8s | Pass |\n| KB search p95 | \u003c 1s | 342ms | Pass |\n| Error rate | \u003c 5% | 0.8% | Pass |\n\nSee [Load Testing Guide](api/tests/load/README.md) for running your own tests.\n\n\n## Contributing\n\nWe welcome contributions from the community! Whether you're fixing bugs, improving documentation, or proposing new features, your help is appreciated.\n\n### How to Contribute\n\n1. **Fork the repository** and create your branch from `main`\n2. **Make your changes** following our coding standards\n3. **Add tests** for any new functionality\n4. **Run the test suite** to ensure everything passes\n5. **Update documentation** as needed\n6. **Submit a pull request** with a clear description of your changes\n\nPlease read our [Contributing Guidelines](CONTRIBUTING.md) for detailed information.\n\n### Code of Conduct\n\nThis project adheres to a [Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to the project maintainers.\n\n### Development Setup\n\nSee the [Quick Start](#quick-start) section for development environment setup instructions.\n\n\n## Bug Reports \u0026 Feature Requests\n\n- **Bug Reports**: [Submit a bug report](.github/ISSUE_TEMPLATE/bug_report.md)\n- **Feature Requests**: [Request a feature](.github/ISSUE_TEMPLATE/feature_request.md)\n- **Security Issues**: See our [Security Policy](SECURITY.md)\n\n\n## License\n\nThis project is licensed under the **MIT License** — see the [LICENSE](LICENSE) file for details.\n\nYou are free to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of this software for any purpose, including commercial use, without restriction.\n\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for a list of changes and version history.\n\n\n## Acknowledgments\n\nBuilt with amazing open source technologies:\n- [FastAPI](https://fastapi.tiangolo.com/) - Modern Python web framework\n- [Next.js](https://nextjs.org/) - React framework\n- [LiteLLM](https://github.com/BerriAI/litellm) - LLM provider integration\n- [Langfuse](https://langfuse.com/) - LLM observability\n- [Qdrant](https://qdrant.tech/) - Vector database\n- And many more! See [package files](api/pyproject.toml) for complete list\n\n\n## Support \u0026 Community\n\n### Getting Help\n\n- **Documentation**: See [api/README.md](api/README.md) and [web/README.md](web/README.md) for detailed setup\n- **API Reference**: Interactive API docs at `/api/v1/docs` when running locally\n- **Discussions**: Join our GitHub Discussions for questions and community support\n- **Issues**: Report bugs via [GitHub Issues](https://github.com/getsynkora/synkora-ai/issues)\n- **Security**: Report vulnerabilities via our [Security Policy](SECURITY.md)\n\n### Community\n\n- **GitHub Discussions**: Ask questions and share ideas\n- **Contributing**: See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines\n- **Code of Conduct**: Read our [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)\n\n\n## Roadmap\n\nSee [CHANGELOG.md](CHANGELOG.md) for recent changes and version history.\n\n### Upcoming Features\n- Agent monetization — let creators publish and charge for agents\n- Enhanced multi-agent workflow orchestration\n- Visual workflow DAG editor\n- Improved knowledge base search with hybrid retrieval\n- Multi-language UI support\n- Additional LLM provider integrations\n\n\n## Project Status\n\nSynkora is actively maintained and in production use. We follow semantic versioning and maintain backward compatibility wherever possible.\n\n- **Stability**: Production-ready\n- **Maintenance**: Actively maintained\n- **Release Cycle**: Regular updates and security patches\n\n---\n\n\n\u003cdiv align=\"center\"\u003e\n\nBuilt with ❤️ by the Synkora Community\n\n[Back to Top](#synkora)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetsynkora%2Fsynkora-ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetsynkora%2Fsynkora-ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetsynkora%2Fsynkora-ai/lists"}