Comp AI 开源社区版:可自托管的合规自动化平台
trycompai/comp
Comp AI 发布社区版,一个基于 AGPLv3 开源、可自托管的合规平台,用于自动化 SOC 2、ISO 27001、HIPAA 和 GDPR 的证据收集、策略管理与控制项实施。
Comp AI Community Edition
About
AI that handles compliance for you in hours.
Comp AI is the fastest way to get compliant with frameworks like SOC 2, ISO 27001, HIPAA and GDPR. Comp AI automates evidence collection, policy management, and control implementation while keeping you in control of your data and infrastructure.
Community Edition and Comp AI Cloud
This repository is Comp AI Community Edition: a free, open-source compliance platform you can self-host and run on your own infrastructure. It's licensed under AGPLv3 and maintained by the Comp AI team together with the community.
Comp AI Cloud is our fully managed platform. It's built and operated as its own product on a separate codebase, with additional capabilities, managed infrastructure, and hands-on support from our team. The two share a lot of DNA and ideas travel in both directions, but each is developed and released independently, with its own features, fixes, and timelines.
| Community Edition | Comp AI Cloud | |
|---|---|---|
| Price | Free | Paid plans |
| Hosting | Self-hosted | Fully managed |
| Source | Open source (AGPLv3), this repo | Proprietary |
| Updates and fixes | Released in this repository | Applied by our team |
| Support | Community (Discord, GitHub Issues) | Dedicated support |
Security advisories for Comp AI Cloud apply to the managed service. Issues affecting Community Edition are tracked and fixed here; see SECURITY.md to report one.
Want the managed version? Get started with Comp AI Cloud.
Recognition
ProductHunt
Vercel
Built With
Contact us
Contact our founders at hello@trycomp.ai to learn more about how we can help you achieve compliance.
Getting Started
To get a local copy up and running, please follow these simple steps.
Prerequisites
Here is what you need to be able to run Comp AI.
- Node.js (Version: >=20.x)
- Bun (Version: >=1.1.36)
- Postgres (Version: >=15.x)
Development
To get the project working locally with all integrations, follow these extended development steps
Setup
Add environment variables and fill them out with your credentials
cp apps/app/.env.example apps/app/.env cp apps/portal/.env.example apps/portal/.env cp packages/db/.env.example packages/db/.env
Get code running locally
- Clone the repo
git clone https://github.com/trycompai/comp.git
- Navigate to the project directory
cd comp- Install dependencies using Bun
bun install
- Get Database Running
cd packages/db bun run docker:up # Spin up docker container bun run db:migrate # Run migrations
- Generate Prisma Types for each app
cd apps/app bun run db:generate cd ../portal bun run db:generate cd ../api bun run db:generate
- Run all apps in parallel from the root directory
bun run dev
Environment Setup
Create the following .env files and fill them out with your credentials
comp/apps/app/.envcomp/apps/portal/.envcomp/packages/db/.env
You can copy from the .env.example files:
Linux / macOS
cp apps/app/.env.example apps/app/.env cp apps/portal/.env.example apps/portal/.env cp packages/db/.env.example packages/db/.env
Windows (Command Prompt)
copy apps\app\.env.example apps\app\.env copy apps\portal\.env.example apps\portal\.env copy packages\db\.env.example packages\db\.env
Windows (PowerShell)
Copy-Item apps\app\.env.example -Destination apps\app\.env Copy-Item apps\portal\.env.example -Destination apps\portal\.env Copy-Item packages\db\.env.example -Destination packages\db\.env
Additionally, ensure the following required environment variables are added to .env in comp/apps/app/.env:
AUTH_SECRET="" # Use `openssl rand -base64 32` to generate DATABASE_URL="postgresql://user:password@host:port/database" RESEND_API_KEY="" # Resend (https://resend.com/api-keys) - Resend Dashboard -> API Keys NEXT_PUBLIC_PORTAL_URL="http://localhost:3002" REVALIDATION_SECRET="" # Use `openssl rand -base64 32` to generate
✅ Make sure you have all of these variables in your
.envfile. If you're copying from.env.example, it might be missing the last two (NEXT_PUBLIC_PORTAL_URLandREVALIDATION_SECRET), so be sure to add them manually.
Some environment variables may not load correctly from .env. In such cases, hard-code the values directly in the relevant files (see Hardcoding section below).
Cloud & Auth Configuration
1. Trigger.dev
- Create an account on https://cloud.trigger.dev
- Create a project and copy the Project ID
- In
comp/apps/app/trigger.config.ts, set:project: 'proj_****az***ywb**ob*';
2. Google OAuth
-
Create an OAuth client:
- Type: Web Application
- Name:
comp_app# You can choose a different name if you prefer!
-
Add these Authorized Redirect URIs:
http://localhost http://localhost:3000 http://localhost:3002 http://localhost:3000/api/auth/callback/google http://localhost:3002/api/auth/callback/google http://localhost:3000/auth http://localhost:3002/auth -
After creating the app, copy the
GOOGLE_IDandGOOGLE_SECRET- Add them to your
.envfiles - If that doesn't work, hard-code them in:
comp/apps/portal/src/app/lib/auth.ts
- Add them to your
3. Redis (Upstash)
- Go to https://console.upstash.com
- Create a Redis database
- Copy the Redis URL and TOKEN
- Add them to your
.envfile, or hard-code them if the environment variables are not being recognized in:comp/packages/kv/src/index.ts
Database Setup
Start and initialize the PostgreSQL database using Docker:
-
Start the database:
cd packages/db bun docker:up -
Default credentials:
- Database name:
comp - Username:
postgres - Password:
postgres
- Database name:
-
To change the default password:
ALTER USER postgres WITH PASSWORD 'new_password';
-
If you encounter the following error:
HINT: No function matches the given name and argument types...Run the fix:
psql "postgresql://postgres:<your_password>@localhost:5432/comp" -f ./packages/db/prisma/functionDefinition.sqlExpected output:
CREATE FUNCTION💡
compis the database name. Make sure to use the correct port and database name for your setup. -
Apply schema and seed:
# Generate Prisma client bun db:generate # Push the schema to the database bun db:push # Optional: Seed the database with initial data bun db:seed
Other useful database commands:
# Open Prisma Studio to view/edit data bun db:studio # Run database migrations bun db:migrate # Stop the database container bun docker:down # Remove the database container and volume bun docker:clean
Start Development
Once everything is configured:
bun run dev
Or use the Turbo repo script:
turbo dev
💡 Make sure you have Turbo installed. If not, you can install it using Bun:
bun add -g turbo
🎉 Yay! You now have a working local instance of Comp AI! 🚀
Deployment
Docker
Steps to deploy Comp AI on Docker are coming soon.
Vercel
Steps to deploy Comp AI on Vercel are coming soon.
📦 Package Publishing
This repository uses semantic-release to automatically publish packages to npm when merging to the release branch. The following packages are published:
@trycompai/db- Database utilities with Prisma client@trycompai/email- Email templates and components@trycompai/kv- Key-value store utilities using Upstash Redis@trycompai/ui- UI component library with Tailwind CSS
Setup
- NPM Token: Add your npm token as
NPM_TOKENin GitHub repository secrets - Release Branch: Create and merge PRs into the
releasebranch to trigger publishing - Versioning: Uses conventional commits for automatic version bumping
Usage
# Install a published package npm install @trycompai/ui # Use in your project import { Button } from '@trycompai/ui/button' import { client } from '@trycompai/kv'
Development
# Build all packages bun run build # Build specific package bun run -F @trycompai/ui build # Test packages locally bun run release:packages --dry-run
Contributors
Repo Activity
License
Comp AI Community Edition is licensed under AGPLv3. Comp AI Cloud is a separate commercial product and is not distributed from this repository.
Tip
Have ideas about what Community Edition should include? Open an issue. We read all of them.
来源:GitHub · github.com