This repository has been archived on 2026-04-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Jeffrey Smith 70678cb352
Some checks failed
CI/CD / detect-changes (pull_request) Successful in 4s
CI/CD / test-frontend (pull_request) Successful in 4s
CI/CD / test-go-pg (pull_request) Failing after 2m18s
CI/CD / test-sqlite (pull_request) Successful in 2m40s
CI/CD / build-and-deploy (pull_request) Has been skipped
Feat default surface routing + fix startup hang (#4)
Default surface routing (v0.2.1):
- `/` redirects to configurable default surface with fallback chain:
  configured → first enabled extension surface → /admin
- Auto-sets default_surface on first extension surface install
- Admin settings UI: Default Surface dropdown
- disabledRedirect() and extension surface disabled redirect now go to
  /admin instead of / to prevent redirect loops

Fix Gin route param conflict causing backend startup hang:
- Team package settings routes used `:pkgId` while sibling routes used
  `:id` — Gin's radix tree entered infinite loop on conflicting param
  names. Unified to `:id`.

Docker entrypoint hardening:
- Health check timeout 10s → 60s
- Stale backend process cleanup on restart
- Crash detection (exit early if backend dies)

Roadmap direction updates:
- v0.3.0: Notes surface (Obsidian-style) replaces Editor surface
- v0.4.0: MVP (was v0.5.0) — chat moved to post-MVP
- No built-in auto-install — explicit install only

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 19:38:02 +00:00
2026-03-17 22:31:34 +00:00
2026-02-03 21:28:18 +00:00
2026-03-26 17:32:32 +00:00
2026-03-26 18:03:44 +00:00

Switchboard Core

A self-hosted extension platform. Identity, teams, permissions, workflows, and a package system. Everything else ships as installable extensions.

What This Is

Switchboard Core is the kernel. It provides the primitives that extensions build on: users, teams, groups, scoped credentials, a Starlark sandbox, workflow orchestration, notifications, and a package installer. It does not include AI chat, providers, personas, or any domain-specific features — those are all extension packages.

Stack

  • Backend: Go / Gin
  • Frontend: Preact + htm (no build step)
  • Database: PostgreSQL (production) + SQLite (dev/test/edge)
  • Sandbox: Starlark with capability-gated modules
  • Deployment: Single Docker image, Kubernetes

Quick Start

git clone <repo-url> && cd switchboard-core
cp server/.env.example server/.env  # edit DB credentials
cd server && go run .
# → http://localhost:8080

Kernel Features

  • Auth: Builtin password, mTLS (client cert), OIDC (Keycloak et al.)
  • Teams & Groups: Horizontal isolation + vertical permissions
  • Packages: Unified registry for surfaces, extensions, libraries, workflows
  • Starlark Sandbox: Capability-gated server-side scripting for extensions
  • Workflows: Staged processes with forms, review, and webhooks
  • Connections: Scoped credential storage (global/team/personal), AES-256-GCM encrypted
  • Notifications: In-app with per-type preferences
  • Audit Log: All admin operations logged
  • Object Storage: PVC or S3-compatible
  • Multi-Replica HA: PG-backed WS tickets and rate limit counters

Documentation

Project Status

v0.1.0 (in progress) — kernel extracted from chat-switchboard v0.38.5. ~44K lines of chat/AI code removed, 27 kernel tables, 20 store interfaces. See ROADMAP.md for details.

License

Proprietary. All rights reserved.

Description
No description provided
Readme Apache-2.0 23 MiB
v0.9.9 Latest
2026-04-03 20:11:58 +00:00
Languages
Go 52.1%
JavaScript 34.6%
CSS 5.5%
Shell 3.8%
HTML 2%
Other 1.9%