Contributing

Outpost is open source under the Elastic License 2.0. We welcome contributions of all kinds: bug fixes, new features, documentation improvements, and more.

Development Setup

Follow the Quick Start guide to get your local development environment running. Make sure all tests pass before making changes:

terminal bash
pnpm test
pnpm lint
pnpm typecheck

Code Style

Branch and PR Workflow

  1. Fork the repository and clone your fork
  2. Create a feature branch: git checkout -b feat/my-feature
  3. Make your changes with clear, descriptive commits
  4. Ensure tests pass: pnpm test && pnpm lint && pnpm typecheck
  5. Push to your fork and open a Pull Request against main

Commit messages: Write plain English commit messages that describe what changed and why. Example: "Add SLA breach notifications to Discord bot" rather than "feat: add sla notifications".

Project Structure

repository layout text
outpost/
├── apps/
│   ├── web/              # Next.js web dashboard
│   ├── discord-bot/      # Discord bot (@discord.js)
│   ├── slack-bot/        # Slack bot (@slack/bolt)
│   ├── teams-bot/        # Teams bot (Bot Framework SDK)
│   ├── github-app/       # GitHub App webhook receiver
│   └── docs/             # Documentation site (this site)
├── packages/
│   ├── ai/               # AI pipeline (Pathfinder + Claude)
│   ├── db/               # Prisma schema and client
│   ├── queue/            # Postgres-backed job queue
│   └── shared/           # Shared types and utilities
├── templates/            # Markdown email templates (invite, SLA breach, etc.)
├── docker-compose.yml    # Local PostgreSQL + Pathfinder
└── turbo.json            # Turborepo config

Running Tests

Tests are run per-package via Turborepo:

terminal bash
# Run all tests
pnpm test

# Run tests for a specific package
pnpm test --filter=@copilotkit/outpost

# Run tests in watch mode
pnpm test --filter=@copilotkit/outpost-web -- --watch

Database Changes

If your change requires a database schema modification:

  1. Edit the Prisma schema in packages/db/prisma/schema.prisma
  2. Run pnpm db:generate to regenerate the client
  3. Run pnpm db:push to apply to your local database
  4. Include the schema changes in your PR

Adding an Integration

To add a new integration (e.g., Zendesk, Intercom):

  1. Create a new app in apps/ following the existing bot/app patterns
  2. Add the app to pnpm-workspace.yaml
  3. Implement the ticket creation interface from packages/shared
  4. Add configuration documentation
  5. Add tests for the integration

License

Outpost is licensed under the Elastic License 2.0 (ELv2). By contributing, you agree that your contributions will be licensed under the same license.