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
One open-source deployment for many student orgs, each with the features it needs.
BusinessPython · TypeScriptGitHub @asusodaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
infra for student orgs
Translation pending
Loading the full README. The saved excerpt is shown below.
Platform is shared infrastructure for student orgs. One deployment serves many orgs. Each org is a Discord server and turns on only the modules it uses.
Each org route checks access. The audit log records each change that an officer or a token makes. Org secrets are encrypted in the database.Read the full README ↗Platform is shared infrastructure for student orgs. One deployment serves many orgs. Each org is a Discord server and turns on only the modules it uses.
Each org route checks access. The audit log records each change that an officer or a token makes. Org secrets are encrypted in the database.
| Module | Does |
|---|---|
points, users | Members, event points, leaderboards, CSV imports |
storefront | A merch store paid in points, with prices checked on the server |
calendar | Notion events synced to Google Calendar, with the credentials of each org |
leetcode, games | The daily LeetCode post and Jeopardy in Discord |
organizations, superadmin | Orgs, officers, module switches, secrets and machine tokens; for the superadmin, the server's services and the shared apps |
godfather | GPU and CPU pods on the org's RunPod account. Members connect over SSH with 12-hour certificates |
agents | Conversations, memories and a profile graph for each member, for agents that talk to members |
knowledge | Hybrid search (pgvector and full text) over documents and crawled public pages |
submodules | Shared content from submodules/: content made once for every org, such as the ASU campus pages and live queries for knowledge, and the job and hackathon feeds for Feeds |
alerts | Org events, such as a failed job or a site that is down, sent to the org's Discord destinations |
accounts | Google Calendar sign-in for a member, so that agents can act for them |
feeds | New job listings and hackathons posted to an alert destination |
runpod | Hosting: deploys of an org's apps to RunPod or This server (capped containers on the deployment's server), with health checks and rollback; shared apps such as the vault |
uptime | Checks of sites and Hosting apps on a schedule, with events when one goes down or up |
dashboard | One page for each org with problems, activity, jobs, CI runs and module state |
mcp | An MCP server and /api/tools that give agents the module tools through scoped machine tokens |
auth, public, bot | Discord sign-in, tokens and access checks; open reads for public pages; the Discord bot |
The dashboard calls modules features and submodules shared content. Each module is in one category: Core, Storage, AI and agents, Automations, Bots or Compute. Core modules are always on. A new org starts with each other module off. A module can read submodules from submodules/: content made once for every org. See Architecture.
| Process | Entry point | Port |
|---|---|---|
| API | main.py (gunicorn) | 8000 |
| Discord bot | bot_main.py | |
| Job worker | worker_main.py (Postgres only) | |
| MCP server | mcp_main.py | 8001 |
| Dashboard and member store | dashboard/ | 5001 (5173 in dev) |
The database is Postgres, or SQLite for a small deployment. Alembic makes the schema.
You need Podman with podman-compose (or Docker), make and uv.
git clone https://github.com/asusoda/platform.git
cd platform
uv sync
uv run pre-commit install
cp .env.template .env # Discord app, bot token, secrets
make dev
The API is at http://localhost:8000 and the dashboard at http://localhost:5001. Create an org with flask --app main org create. Getting started has the settings and the steps to run Platform on one RunPod pod.
make dev # start with logs
make up # start in the background
make down # stop
make check # fix lint and format, then type check, tests, migrations
make ci # the checks that CI runs, with no changes to files
make shell # shell in the API container
make deploy # deploy on the server
docs/ has the guides. Each module folder has a README.md. docs/roadmap.md has the plan.
The Software Developers Association (SoDA) at ASU and AI Society at ASU run Platform. Their servers are the examples in these docs.
BSD 3-Clause (modified for web attribution). Copyright The Software Developers Association at ASU. See LICENSE.