Synetic Developer Portal
Internal documentation and API reference for the Synetic platform. Everything you need to build, integrate, and extend the platform.
API Reference
Full endpoint documentation with request/response examples
Architecture
System design, database schema, and multi-tenancy model
Features
Feature flags, plan gating, and guardrails system
Release Notes
Latest updates, features, and platform changes
https://dev.synetic.io/apiv1.0developmentGoogle OAuth + JWTGetting Started
Everything you need to get up and running with the Synetic platform. Start here on your first day.
What is Synetic?
Synetic is a multi-tenant SaaS platform that lets knowledge professionals (authors, researchers, coaches, speakers, advisors, consultants) build AI agents trained on their own content and monetize their expertise. Each agent is a standalone product powered by the owner's knowledge base, frameworks, and methodology.
The platform handles everything: authentication, multi-provider AI (Claude, OpenAI, HuggingFace, DigitalOcean), RAG knowledge retrieval, NeMo guardrails, subscription tiers, content intelligence, and analytics. Agent owners configure everything through the portal. End users interact through the agent SPA.
Tech Stack
Repositories
All repos are hosted on Gitea under the synetic org. Frontend repos are single-file SPAs with no build step.
| Repository | Path | Domain | Purpose |
|---|
Key Files You'll Touch
Live Platform Status
Real-time status from the API health endpoint and service checks.
Day 1 Checklist
bash synetic.sh statusapi/app.py and read _init_db() to understand the schemabash synetic.sh restart, and verifyConventions
{"ok": true}. Errors: {"error": "message"} with HTTP status. Sensitive keys masked with _mask_key().CREATE TABLE IF NOT EXISTS. Migrations via ALTER TABLE ... ADD COLUMN with rollback on exists. No migration framework.synetic.sh for everything. Commit to all repos that changed. Push to Gitea. Never skip hooks.Useful Commands
Architecture
Environment topology, technology stack, and service configuration
Agent Chat Flow
The complete request lifecycle from user message to streamed response, including guardrail checks.
Tech Stack
Technologies powering the Synetic platform.
Environment Details
Development environment URLs, services, and connection information.
Application URLs
Service Configuration
Database
Redis
Object Storage
Authentication
API Reference
Complete endpoint documentation for the Synetic API
Public Endpoints
No authentication required. Read-only access to public configuration and content.
{
"status": "ok",
"timestamp": "2026-03-22T10:00:00Z"
}
agent_id (required) - The agent/tenant ID
{
"agent": { "id": 1, "name": "Demo Agent", "slug": "demo" },
"settings": { "ai_model": "gpt-4o", "theme": "dark", ... },
"features": { "web_search": true, "rag": true, ... },
"branding": { "logo_url": "...", "primary_color": "#6366f1" }
}
{
"plans": [
{
"id": 1,
"name": "Starter",
"features": ["basic_chat", "knowledge_base"],
"limits": { "users": 10, "knowledge_sources": 5 }
},
...
]
}
{
"features": [
{ "key": "web_search", "name": "Web Search", "description": "...", "category": "ai" },
{ "key": "rag", "name": "Knowledge Base RAG", "description": "...", "category": "ai" },
...
]
}
{
"release_notes": [
{
"id": 1,
"version": "1.2.0",
"title": "Feature Update",
"body": "...",
"type": "feature",
"published_at": "2026-03-20T00:00:00Z"
},
...
]
}
{
"blocks": [
{ "slug": "hero-heading", "content": "...", "type": "text" },
...
]
}
Authentication
Google OAuth authentication endpoints. Returns JWT tokens for subsequent API calls.
{
"credential": "google_id_token_here",
"agent_id": 1
}
{
"token": "eyJhbGciOi...",
"user": {
"id": 1,
"email": "user@example.com",
"name": "John Doe",
"role": "user",
"is_admin": false
}
}
{
"credential": "google_id_token_here"
}
{
"token": "eyJhbGciOi...",
"user": {
"id": 1,
"email": "dev@synetic.io",
"name": "Developer",
"role": "developer"
}
}
{
"error": "Access denied. You must be invited by an admin."
}
User Endpoints
Authenticated user profile and preferences. Requires a valid JWT session token.
Authorization: Bearer <jwt_token>
{
"prefs": {
"theme": "dark",
"sidebar_collapsed": false,
"notifications_enabled": true
}
}
{
"theme": "light",
"sidebar_collapsed": true
}
{
"prefs": { "theme": "light", "sidebar_collapsed": true, ... }
}
{
"insights": [
{ "id": 1, "content": "...", "created_at": "2026-03-20T..." },
...
]
}
{
"content": "Key insight text from AI response",
"message_id": 42
}
{
"insight": { "id": 5, "content": "...", "created_at": "..." }
}
id (required) - Insight ID to delete
{ "ok": true }
Chat Endpoints
AI chat with streaming responses, guardrails enforcement, RAG retrieval, and web search.
{
"message": "How do I configure SSO?",
"conversation_id": null, // null for new conversation
"model": "gpt-4o", // optional, uses agent default
"web_search": false // optional, enables web search
}
data: {"type": "token", "content": "To"}
data: {"type": "token", "content": " configure"}
data: {"type": "token", "content": " SSO..."}
data: {"type": "sources", "sources": [...]}
data: {"type": "done", "conversation_id": 12, "message_id": 45}
data: {"type": "guardrail_block", "message": "This request was blocked by safety guardrails."}
data: {"type": "error", "message": "Internal server error"}
{
"conversation_id": 12
}
{
"title": "SSO Configuration Guide"
}
Admin Endpoints
Agent administration. Requires JWT + is_admin role on the current agent.
{
"total_users": 42,
"total_conversations": 156,
"total_messages": 2340,
"active_today": 12
}
{
"user_id": 5,
"is_admin": true,
"is_blocked": false
}
{
"title": "Sales Assistant",
"content": "You are a helpful sales assistant...",
"type": "system",
"is_active": true
}
{
"id": 3,
"content": "Updated prompt content...",
"is_active": false
}
id (required) - Prompt ID to delete
{
"title": "Getting Started",
"body": "Welcome to your AI assistant!",
"icon": "book",
"order": 1
}
{ "id": 1, "title": "Updated Title", "body": "Updated body" }id (required) - Tile ID to delete
{
"settings": {
"ai_model": "gpt-4o",
"system_prompt": "You are a helpful assistant...",
"temperature": 0.7,
"max_tokens": 4096,
"welcome_message": "Hello! How can I help?"
}
}
{
"ai_model": "gpt-4o-mini",
"temperature": 0.5
}
{
"features": {
"web_search": true,
"rag": true,
"guardrails": false,
"training": true
}
}
{
"web_search": false,
"guardrails": true
}
Platform Endpoints
Tenant management for platform account owners. Requires platform JWT from /api/platform/auth/google.
{ "credential": "google_id_token_here" }
{
"name": "My New Agent",
"slug": "my-agent",
"description": "A helpful AI assistant"
}
{ "name": "Updated Name", "description": "Updated description" }
{ "ai_model": "gpt-4o", "system_prompt": "..." }{ "web_search": true, "rag": false }multipart/form-data
{ "id": 1, "name": "Updated Name", "is_active": true }id (required) - Knowledge source ID
{
"guardrails": [
{ "guardrail_id": 1, "enabled": true, "config": {} }
]
}{
"name": "No competitor mentions",
"description": "Block responses mentioning competitor products",
"type": "output",
"action": "block"
}{ "id": 1, "name": "Updated rule", "action": "warn" }id (required) - Custom guardrail ID
Syentic Admin Endpoints
Super-admin endpoints for Synetic platform management. Requires Syentic admin JWT.
{ "credential": "google_id_token_here" }
{
"email": "owner@company.com",
"name": "Account Owner"
}
{
"name": "Toxicity Filter",
"description": "Blocks toxic or harmful content",
"type": "input_output",
"nemo_rail_id": "toxicity",
"default_action": "block"
}
{ "id": 1, "name": "Updated Name", "default_action": "warn" }id (required) - Guardrail ID
{ "env_var": "SMTP_USER", "value": "noreply@synetic.io" }
days (optional) - Time window in days (default: 30, max: 365)
page (optional) - Page number (default: 1) per_page (optional) - Items per page (default: 50) action (optional) - Filter by action type tenant_id (optional) - Filter by tenant
Product Overview
What Synetic is, who it's for, and how it works
Your Expertise. Always On.
Synetic is a platform for building AI agents trained on your knowledge, expertise, and intellectual property. It lets authors, consultants, advisors, and domain experts monetize what they know — 24/7, at scale, without adding anything to their calendar.
The Opportunity
General-purpose AI gives people access to average answers. But clients, readers, and followers don't seek out experts for average — they come because the perspective is different. Books, courses, and consulting hours are all limited by time. The expert's knowledge is trapped in formats that don't scale.
An AI agent trained specifically on the expert's work — their methodology, voice, and hard-won insights. It runs 24/7, answering questions, walking users through frameworks, and delivering the expert's perspective to an audience with no upper limit. A new revenue stream that doesn't add to their workload.
Who It's For
Turn your book into an interactive conversation. Give every reader a direct line to your ideas and a reason to go deeper.
Codify decades of know-how into an agent that represents your perspective. Be present in conversations you could never personally attend.
Scale your practice without scaling your hours. Deliver your frameworks on demand. Qualify leads, educate clients, and extend your reach.
Provide always-on guidance between sessions. Your agent delivers consistent, trusted answers grounded in your actual methodology.
How It Works
Upload books, frameworks, research, and content. The agent learns your methodology, your voice, and your hard-won insights. Nothing generic about it.
Define the tiers, the features, and what your audience pays. Free access, a premium tier, a book companion. The business model is yours to design.
Users explore your frameworks with guided prompts, apply your methodology to their own situations, and find a richer way to think with your ideas.
Platform Capabilities
Everything the platform provides to agent owners and their users.
Business Model
Synetic is a B2B SaaS platform. Revenue comes from agent owners who pay a monthly subscription to host their AI agents on the platform.
Agent owners set their own pricing for end users. Synetic provides the infrastructure, AI pipeline, and tools — the agent owner owns the relationship with their audience and controls the monetization.
Plans are tiered by features and storage. Basic plans include core chat and knowledge base. Higher tiers unlock web search, training hub, guardrails, PDF export, and more. Storage caps increase with each tier.
Features
Complete feature catalog with detailed descriptions, value propositions, and implementation notes
Repositories
Browse source code across all Synetic repos
Repository Map
| Repository | Server Path | Domain | Purpose |
|---|---|---|---|
| synetic-platform | /var/www/synetic-platform | — | API backend (Python/Flask), scripts, docs |
| synetic-marketing | /var/www/synetic-marketing | dev.synetic.io | Marketing site + public pages |
| synetic-admin | /var/www/synetic-admin | manage.dev.synetic.io | Synetic staff admin panel |
| synetic-portal | /var/www/synetic-portal | portal.dev.synetic.io | Tenant portal (agent owners) |
| synetic-agents | /var/www/synetic-agents | agents.dev.synetic.io | Agent runtime SPA (end users) |
| synetic-devportal | /var/www/synetic-devportal | developers.dev.synetic.io | Developer portal (this app) |
:3000) under the synetic org. Frontend repos are single-file static SPAs — no build step required. Deploy with bash synetic.sh deploy.
Recent Commits
Release Notes
Latest platform updates and changes
The Architect
Meet the AI that designed and built the Synetic platform
How I Work
I operate through Claude Code, Anthropic's CLI tool that gives me direct access to the filesystem, terminal, git, and all server infrastructure. I read files, write code, run commands, manage services, configure nginx, issue SSL certificates, and deploy changes — all within a conversational loop with the team.
Each session, I pick up where the last one left off. I maintain a persistent memory system (file-based, stored in ~/.claude/projects/) that preserves context about the project, user preferences, architectural decisions, and feedback across conversations.
My approach: understand the existing code before changing it, make the minimum change needed, ship working software, and iterate based on feedback. I don't generate scaffolding or boilerplate — I build the real thing.
What I Built
A non-exhaustive list of systems I designed and implemented for the Synetic platform.
Memory System
I maintain persistent memory across conversations in a structured file-based system. This allows me to recall project context, user preferences, architectural decisions, and prior feedback without re-reading the entire codebase each time.
Capabilities
How to Work With Me
Be direct. Tell me what you want built, changed, or fixed. I'll ask if I need clarification, otherwise I'll start building.
Give feedback. If I do something wrong, say so — I'll remember it. If I do something right, say that too — I'll remember that as well. Both corrections and confirmations shape how I work.
Think big. I can handle ambitious, multi-system tasks in a single session. Don't break things into tiny requests unless you want to — I can plan and execute complex work end to end.
Trust but verify. I write working code, but I'm not infallible. I'll always validate my own work (syntax checks, API tests, health checks), but production deploys should be reviewed.
Platform Stats
Numbers from the current codebase.
DevOps
Server management, deployments, and operations
bash synetic.sh start
bash synetic.sh stop
bash synetic.sh restart
bash synetic.sh status
bash synetic.sh deploy
bash synetic.sh logs
bash synetic.sh health
Stack Overview
Systemd unit:
synetic-api5 vhosts, /api/ proxied to Gunicorn
30+ tables, row-level tenant isolation
Shared rate limiting across workers
Books, logos, training files, knowledge
Static files served by nginx
Add Server
Output
Deploy History
Terminal
Server Setup Guide
How to install, configure, and deploy the Synetic platform from scratch
Server Roles
The Synetic platform runs on a single server with two logical roles. All repos live under /var/www/.
/api/ requests to the backend.
dev.synetic.io → synetic-marketingportal.dev.synetic.io → synetic-portalmanage.dev.synetic.io → synetic-adminagents.dev.synetic.io → synetic-agentsdevelopers.dev.synetic.io → synetic-devportal
synetic-api (systemd)Repo:
/var/www/synetic-platform/Entry:
api/app.pyConfig:
api/.env
Step 1: Prerequisites
Before starting, ensure the following are available.
2+ vCPUs, 4GB+ RAM
Root or sudo access
Public IP with DNS records for all subdomains
Redis instance (managed or local, TLS preferred)
DigitalOcean Spaces (S3 compatible) for file storage
Google OAuth credentials (Client ID)
At least one AI provider API key (Claude, OpenAI, or HuggingFace)
Step 2: Install System Dependencies
# Update system sudo apt update && sudo apt upgrade -y # Install Python, nginx, certbot, and build tools sudo apt install -y python3.12 python3.12-venv python3-pip nginx certbot python3-certbot-nginx git curl # Install NLP dependencies (for content intelligence) sudo apt install -y build-essential python3-dev
Step 3: Clone Repositories
Clone all 6 repos into /var/www/. Replace GITEA_URL with your Gitea instance.
cd /var/www # Core repos git clone $GITEA_URL/synetic/synetic-platform.git git clone $GITEA_URL/synetic/synetic-marketing.git git clone $GITEA_URL/synetic/synetic-portal.git git clone $GITEA_URL/synetic/synetic-admin.git git clone $GITEA_URL/synetic/synetic-agents.git git clone $GITEA_URL/synetic/synetic-devportal.git
Step 4: Configure the API
Create the environment file from the template and fill in your credentials.
cd /var/www/synetic-platform/api cp .env.example .env nano .env
Required environment variables:
DATABASE_URL — PostgreSQL connection stringREDIS_URL — Redis connection string (with TLS if managed)JWT_SECRET — Random secret for signing tokens (generate with openssl rand -hex 32)GOOGLE_CLIENT_ID — Google OAuth Client IDDO_SPACES_KEY, DO_SPACES_SECRET, DO_SPACES_BUCKET, DO_SPACES_REGION — Object storageADMIN_EMAILS — Comma-separated list of Synetic admin emailsAGENTS_BASE_URL — e.g. https://agents.dev.synetic.io
Step 5: Set Up Python Environment
cd /var/www/synetic-platform/api # Create virtual environment python3.12 -m venv venv # Activate and install dependencies source venv/bin/activate pip install -r requirements.txt # Download NLP models (for content intelligence) python -m spacy download en_core_web_sm
The API will auto-initialize the database schema on first startup (via _init_db() in app.py). No manual migration scripts needed.
Step 6: Create the API Service
sudo nano /etc/systemd/system/synetic-api.service
Contents:
[Unit]
Description=Synetic Platform API
After=network.target
[Service]
User=root
WorkingDirectory=/var/www/synetic-platform/api
ExecStart=/var/www/synetic-platform/api/venv/bin/gunicorn \
--workers 3 \
--bind 127.0.0.1:5002 \
--timeout 120 \
--keep-alive 5 \
--forwarded-allow-ips=127.0.0.1 \
app:app
Restart=always
RestartSec=5
Environment=PATH=/var/www/synetic-platform/api/venv/bin
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload sudo systemctl enable synetic-api sudo systemctl start synetic-api
Step 7: Configure nginx
Create a server block for each subdomain. All follow the same pattern: serve static files, proxy /api/ to the Flask backend.
# Example: /etc/nginx/sites-available/portal.dev.synetic.io
server {
server_name portal.dev.synetic.io;
location / {
root /var/www/synetic-portal;
index index.html;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://127.0.0.1:5002;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_read_timeout 120s;
client_max_body_size 10m;
}
listen 80;
}
# Create sites for each domain
for site in dev.synetic.io portal.dev.synetic.io manage.dev.synetic.io agents.dev.synetic.io developers.dev.synetic.io; do
sudo ln -sf /etc/nginx/sites-available/$site /etc/nginx/sites-enabled/
done
# Test and reload
sudo nginx -t && sudo systemctl reload nginx
# Set up HTTPS with Let's Encrypt
sudo certbot --nginx -d dev.synetic.io -d portal.dev.synetic.io -d manage.dev.synetic.io -d agents.dev.synetic.io -d developers.dev.synetic.io
Step 8: Deploy Code Updates
Use the synetic.sh management script for all deployments.
cd /var/www/synetic-platform # Full deploy (pulls all repos, installs deps, restarts API, reloads nginx) bash synetic.sh deploy # Or manage individual services bash synetic.sh restart # Restart API + reload nginx bash synetic.sh status # Check all services bash synetic.sh logs # Tail API logs bash synetic.sh health # Health check all endpoints
Manual deploy (individual repo):
# Frontend repos (no restart needed, nginx serves static files) cd /var/www/synetic-portal && git pull # API repo (requires restart) cd /var/www/synetic-platform && git pull sudo systemctl restart synetic-api
Step 9: Verify Installation
# Check API is running curl -s http://127.0.0.1:5002/api/health # Check all services bash synetic.sh status # Check all endpoints are accessible bash synetic.sh health
The API auto-initializes the database on first startup. All tables are created via _init_db() with idempotent CREATE TABLE IF NOT EXISTS statements. Default data (tenant types, feature metadata, guardrails) is seeded automatically.
Key Files Reference
api/platform_routes.py — Tenant portal API
api/syentic_routes.py — Admin API
api/auth_helpers.py — JWT + Google OAuth
api/db.py — Database wrapper
api/.env — All secrets and config
synetic.sh — Service management
synetic-portal/index.html
synetic-admin/index.html
synetic-agents/index.html + app.js
synetic-devportal/index.html
/etc/nginx/sites-available/* — nginx configs
/etc/systemd/system/synetic-api.service
UI Design System
Brand guidelines, logo usage, color system, typography, and component standards for designers and marketers
Logo & Design Element
The Synetic logo consists of the design element mark paired with the wordmark. The design element also serves as the standalone favicon and icon representation across all products.
Logo Specifications
Weight: 700 (Bold)
Color: #FFFFFF
Line Height: 1
Nav Size: 1.5rem
Weight: 500 (Medium)
Color: #A3A3A3
Letter Spacing: 0.15em
Transform: Uppercase
Alignment: Center
Gap: 6px
Background: Transparent
Nav Mark Height: 32px
Contextual Logo Subtitles
The tagline below "Synetic" changes per product surface. The design element and wordmark remain consistent. The subtitle always uses the same typographic treatment.
Color System
All Synetic products use a dark theme with indigo/purple accent gradients. These are the core CSS custom properties used across every surface.
Backgrounds
Brand / Accent
Text
Status / Semantic
Borders & Surfaces
rgba(255,255,255,0.08)Variable: --border
Usage: Cards, dividers, input fields, sidebar borders
rgba(255,255,255,0.16)Variable: --border-hover
Usage: Interactive element hover states
Typography
Two font families are used across all Synetic products. Both are loaded from Google Fonts.
abcdefghijklmnopqrstuvwxyz
0123456789
Usage: Page titles, section headings, card titles, hero text, button labels
Line Height: 1.1 to 1.3
abcdefghijklmnopqrstuvwxyz
0123456789
Usage: Body text, descriptions, form labels, navigation, metadata
Line Height: 1.6 to 1.8
Type Scale
Spacing & Border Radius
Spacing Scale
8px — Small (form element gaps)
12px — Default (card internal padding gaps)
16px — Medium (between related elements)
20px — Comfortable (section inner padding)
24px — Large (between cards, grid gaps)
32px — XL (card padding)
48px — Section (nav/footer padding)
96px — Page section (marketing vertical rhythm)
Border Radius
Buttons, inputs
Cards, panels
Modals
Avatars, dots
--radius-btn: 8px--radius: 12px
Button Styles
All buttons use DM Sans 600 weight. Consistent padding, border radius, and transition behavior across all surfaces.
Glow shadow
Padding: 9px 20px
No shadow
Padding: 9px 20px
Glow shadow
Padding: 14px 28px
Subtle border
Padding: 13px 28px
Copy & Content Rules
Consistent rules across all marketing copy, UI text, and product surfaces.
"24/7" (use "around the clock")
Hyphenated compounds (hard-won, always-on, expertise-driven)
Generic or decorative icons (must be contextually relevant)
"Synetic Inc." in legal copy (use "Synetic Consulting Group, LLC")
"Synetic," "Synetic.io," or "Synetic Expert Agents" in marketing
"Synetic Consulting Group, LLC" in legal and copyright
Periods to separate ideas instead of dashes
Icons that are contextually relevant to their section
Product Naming & Legal
Platform: Synetic Expert Agent platform
Product: Expert AI Agents
Brand: Synetic Expert Agents
Jurisdiction: Wyoming LLC
Copyright: © 2026 Synetic Consulting Group, LLC
Platform ref: Synetic Expert Agent platform
Asset Files
All logo and icon assets available across the platform.