Skip to content

namuh-eng/exponential

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,152 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

exponential

GitHub stars License: ELv2 Version Self-hostable MCP

A source-available, self-hostable Linear-style issue tracker with a terminal-shaped soul.

Create issues, plan cycles, triage inbox — entirely under your control.


exponential issues view

Quickstart

Security: .env.example ships with placeholder secrets. Set real values for EXPONENTIAL_SESSION_SECRET, EXPONENTIAL_METRICS_TOKEN, and DB_PASSWORD (openssl rand -hex 32) before the instance accepts any network connections — not only before sharing it.

Run the full stack locally (web + API + Postgres + Redis):

# Required: replace sample secrets in .env before exposing the app
git clone https://github.com/namuh-eng/exponential.git && cd exponential && cp .env.example .env && $EDITOR .env && docker compose up --build

Build time: this compiles the full Go + Node.js stack from source (~15 min and ~8 GiB RAM on a typical machine). A faster image-based path is coming in #634.

Open http://localhost:7015 — done.

Full self-hosting guide: docs/self-hosting.md


Why exponential?

Feature exponential Linear Jira Plane
Self-hostable Yes — Docker Compose or ECS No (Cloud only) Server edition (EOL) Yes
Open / source-available Yes (ELv2) No No Yes (AGPL)
Go headless API Yes — OpenAPI contract + SDK No No No
MCP server (local) Yes — stdio, read-only No No No
Keyboard-first UI Yes — command palette + shortcuts Yes Limited Limited
Cycles (sprints) Yes Yes Yes (Scrum) Yes
Initiatives / roadmap Yes Yes Roadmap plugin Yes
AI integrations OpenAI summaries, MCP Yes (Ask Linear) Atlassian Intelligence Limited
CLI Yes (TypeScript, npm) Limited Limited No
License Elastic 2.0 — use + modify, no resale Proprietary Proprietary AGPL

What You Get

  • Issues: list, board, priority, labels, estimates, assignees, comments, reactions, history, templates, bulk updates, and triage flows.
  • Projects and roadmap: project detail, milestones, updates, labels, statuses, templates, progress, and roadmap views.
  • Cycles and initiatives: sprint-style cycle planning plus strategic initiative grouping across projects.
  • Inbox and notifications: assignment, mention, inbox, and notification settings surfaces.
  • Workspace admin: members, invitations, security, API/OAuth applications, import/export, custom emoji, documents, SLA, integrations, and AI settings.
  • Keyboard-first UI: command palette, shortcut registry, dense list/board views, and terminal/editorial visual direction.
  • Self-hosting controls: Compose defaults, bind-address controls, optional Google OAuth, Slack OAuth, S3 attachments, SES or Opensend email, metrics token, and ECS deployment scripts.
  • MCP server: expose your exponential workspace to AI agents via the local stdio MCP runtime — read issues, projects, cycles, and more.

Screenshots

exponential board view

exponential inbox view

exponential roadmap view


Self-Hosting

Docker Compose (recommended)

git clone https://github.com/namuh-eng/exponential.git
cd exponential
cp .env.example .env

# Generate secrets — paste each value into .env
openssl rand -hex 32   # → EXPONENTIAL_SESSION_SECRET
openssl rand -hex 32   # → EXPONENTIAL_METRICS_TOKEN

$EDITOR .env
docker compose up --build

Open http://localhost:7015. The stack runs: web, api, api-migrate, postgres, and redis.

See docs/self-hosting.md for reverse-proxy headers, bind-address controls, backups, upgrades, and optional integrations.

AWS ECS (production)

cp .env.example .env
bash scripts/prepare-ecs-deploy-env.sh
DB_PASSWORD=<generated> bash scripts/preflight.sh
bash scripts/prepare-ecs-deploy-env.sh
RUN_PROD_SMOKE=true bash scripts/deploy-ecs.sh

Deploys separate API and web services behind an ALB with RDS, ElastiCache, S3, SES, ECR, smoke tests, and Secrets Manager.

Local Development

git clone https://github.com/namuh-eng/exponential.git
cd exponential
pnpm install
cp .env.example .env
docker compose -f docker-compose.dev.yml up --build

Web: http://localhost:7015 · API: http://localhost:7016


CLI and MCP

After creating a personal access token in Workspace → Settings → API:

export EXPONENTIAL_TOKEN=pat_your_token
export EXPONENTIAL_API_URL=http://localhost:7016/v1

# CLI
pnpm --filter @namuh-eng/expn-cli cli -- issue ls --json

# Local MCP server (read-only, stdio)
pnpm --filter @exponential/mcp exec exponential-mcp

Architecture

Layer Implementation
Web Next.js 16, React 19, TypeScript, Tailwind, Radix UI
API Go, chi, pgx, sqlc, OpenAPI strict server stubs
Data PostgreSQL 15+, SQL migrations, Redis 7+
Contract packages/proto/openapi.yaml + generated TypeScript SDK
Auth First-party Go auth, Google OAuth, magic links, session cookies, PATs
Optional integrations S3 attachments, SES/Opensend email, Slack OAuth, OpenAI summaries
Deployment Docker Compose (one host) · AWS ECS Fargate (managed)
Validation make check, make test, make test-e2e, Biome, Vitest, Go tests, Playwright

Repository Layout

exponential/
├── apps/api/             # Go headless API and migration binary
├── apps/cli/             # TypeScript CLI over the generated SDK
├── apps/mcp/             # Local stdio MCP runtime
├── apps/web/             # Next.js UI-only app
├── packages/mcp-server/  # Read-only MCP tool package
├── packages/proto/       # OpenAPI contract and SQL migrations
├── packages/sdk/         # Generated TypeScript SDK
├── infra/                # Dockerfiles and ECS task definitions
├── scripts/              # Validation, deploy, smoke, and generation helpers
└── docs/                 # Operator docs and architecture notes

Development Commands

make check      # typecheck, lint/format, API build, OpenAPI, deploy guards
make test       # Go API tests + Vitest unit tests
make test-e2e   # Playwright E2E with the dev stack
make all        # check + test
make dev        # pnpm dev
make build      # production build

License

Elastic License 2.0 (ELv2).

You may use, modify, and self-host exponential for any internal or personal purpose. You may not offer it as a managed hosted service to third parties.


Contributing

Start with CONTRIBUTING.md. Before opening a PR:

make check
make test

Run make test-e2e before declaring browser-facing flows verified.

Support


Built by Jaeyun Ha at Ralphthon Seoul 2026.

Releases

No releases published

Packages

 
 
 

Contributors