mirror of
https://github.com/simstudioai/sim.git
synced 2026-01-08 06:33:52 -05:00
* fix(docs): clarify working directory for drizzle migration (#2375) * fix(landing): prevent url encoding for spaces for footer links (#2376) * fix: handle empty body.value in Teams webhook notification parser (#2425) * Update directory path for migration command --------- Co-authored-by: Vikhyath Mondreti <vikhyathvikku@gmail.com> Co-authored-by: Waleed <walif6@gmail.com> Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com> Co-authored-by: icecrasher321 <icecrasher321@users.noreply.github.com> Co-authored-by: Siddharth Ganesan <33737564+Sg312@users.noreply.github.com> Co-authored-by: mosa <mosaxiv@gmail.com> Co-authored-by: Emir Karabeg <78010029+emir-karabeg@users.noreply.github.com> Co-authored-by: Adam Gough <77861281+aadamgough@users.noreply.github.com> Co-authored-by: Shivam <shivamprajapati035@gmail.com> Co-authored-by: Gaurav Chadha <65453826+Chadha93@users.noreply.github.com> Co-authored-by: root <root@Delta.localdomain>
289 lines
13 KiB
Markdown
289 lines
13 KiB
Markdown
<p align="center">
|
|
<a href="https://sim.ai" target="_blank" rel="noopener noreferrer">
|
|
<img src="apps/sim/public/logo/reverse/text/large.png" alt="Sim Logo" width="500"/>
|
|
</a>
|
|
</p>
|
|
|
|
<p align="center">Build and deploy AI agent workflows in minutes.</p>
|
|
|
|
<p align="center">
|
|
<a href="https://sim.ai" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/sim.ai-6F3DFA" alt="Sim.ai"></a>
|
|
<a href="https://discord.gg/Hr4UWYEcTT" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/Discord-Join%20Server-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
|
|
<a href="https://x.com/simdotai" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/twitter/follow/simstudioai?style=social" alt="Twitter"></a>
|
|
<a href="https://docs.sim.ai" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/Docs-6F3DFA.svg" alt="Documentation"></a>
|
|
</p>
|
|
|
|
### Build Workflows with Ease
|
|
Design agent workflows visually on a canvas—connect agents, tools, and blocks, then run them instantly.
|
|
|
|
<p align="center">
|
|
<img src="apps/sim/public/static/workflow.gif" alt="Workflow Builder Demo" width="800"/>
|
|
</p>
|
|
|
|
### Supercharge with Copilot
|
|
Leverage Copilot to generate nodes, fix errors, and iterate on flows directly from natural language.
|
|
|
|
<p align="center">
|
|
<img src="apps/sim/public/static/copilot.gif" alt="Copilot Demo" width="800"/>
|
|
</p>
|
|
|
|
### Integrate Vector Databases
|
|
Upload documents to a vector store and let agents answer questions grounded in your specific content.
|
|
|
|
<p align="center">
|
|
<img src="apps/sim/public/static/knowledge.gif" alt="Knowledge Uploads and Retrieval Demo" width="800"/>
|
|
</p>
|
|
|
|
## Quickstart
|
|
|
|
### Cloud-hosted: [sim.ai](https://sim.ai)
|
|
|
|
<a href="https://sim.ai" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/sim.ai-6F3DFA?logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iNjE2IiBoZWlnaHQ9IjYxNiIgdmlld0JveD0iMCAwIDYxNiA2MTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTU5XzMxMykiPgo8cGF0aCBkPSJNNjE2IDBIMFY2MTZINjE2VjBaIiBmaWxsPSIjNkYzREZBIi8+CjxwYXRoIGQ9Ik04MyAzNjUuNTY3SDExM0MxMTMgMzczLjgwNSAxMTYgMzgwLjM3MyAxMjIgMzg1LjI3MkMxMjggMzg5Ljk0OCAxMzYuMTExIDM5Mi4yODUgMTQ2LjMzMyAzOTIuMjg1QzE1Ny40NDQgMzkyLjI4NSAxNjYgMzkwLjE3MSAxNzIgMzg1LjkzOUMxNzcuOTk5IDM4MS40ODcgMTgxIDM3NS41ODYgMTgxIDM2OC4yMzlDMTgxIDM2Mi44OTUgMTc5LjMzMyAzNTguNDQyIDE3NiAzNTQuODhDMTcyLjg4OSAzNTEuMzE4IDE2Ny4xMTEgMzQ4LjQyMiAxNTguNjY3IDM0Ni4xOTZMMTMwIDMzOS41MTdDMTE1LjU1NSAzMzUuOTU1IDEwNC43NzggMzMwLjQ5OSA5Ny42NjY1IDMyMy4xNTFDOTAuNzc3NSAzMTUuODA0IDg3LjMzMzQgMzA2LjExOSA4Ny4zMzM0IDI5NC4wOTZDODcuMzMzNCAyODQuMDc2IDg5Ljg4OSAyNzUuMzkyIDk0Ljk5OTYgMjY4LjA0NUMxMDAuMzMzIDI2MC42OTcgMTA3LjU1NSAyNTUuMDIgMTE2LjY2NiAyNTEuMDEyQzEyNiAyNDcuMDA0IDEzNi42NjcgMjQ1IDE0OC42NjYgMjQ1QzE2MC42NjcgMjQ1IDE3MSAyNDcuMTE2IDE3OS42NjcgMjUxLjM0NkMxODguNTU1IDI1NS41NzYgMTk1LjQ0NCAyNjEuNDc3IDIwMC4zMzMgMjY5LjA0N0MyMDUuNDQ0IDI3Ni42MTcgMjA4LjExMSAyODUuNjM0IDIwOC4zMzMgMjk2LjA5OUgxNzguMzMzQzE3OC4xMTEgMjg3LjYzOCAxNzUuMzMzIDI4MS4wNyAxNjkuOTk5IDI3Ni4zOTRDMTY0LjY2NiAyNzEuNzE5IDE1Ny4yMjIgMjY5LjM4MSAxNDcuNjY3IDI2OS4zODFDMTM3Ljg4OSAyNjkuMzgxIDEzMC4zMzMgMjcxLjQ5NiAxMjUgMjc1LjcyNkMxMTkuNjY2IDI3OS45NTcgMTE3IDI4NS43NDYgMTE3IDI5My4wOTNDMTE3IDMwNC4wMDMgMTI1IDMxMS40NjIgMTQxIDMxNS40N0wxNjkuNjY3IDMyMi40ODNDMTgzLjQ0NSAzMjUuNiAxOTMuNzc4IDMzMC43MjIgMjAwLjY2NyAzMzcuODQ3QzIwNy41NTUgMzQ0Ljc0OSAyMTEgMzU0LjIxMiAyMTEgMzY2LjIzNUMyMTEgMzc2LjQ3NyAyMDguMjIyIDM4NS40OTQgMjAyLjY2NiAzOTMuMjg3QzE5Ny4xMTEgNDAwLjg1NyAxODkuNDQ0IDQwNi43NTggMTc5LjY2NyA0MTAuOTg5QzE3MC4xMTEgNDE0Ljk5NiAxNTguNzc4IDQxNyAxNDUuNjY3IDQxN0MxMjYuNTU1IDQxNyAxMTEuMzMzIDQxMi4zMjUgOTkuOTk5NyA0MDIuOTczQzg4LjY2NjggMzkzLjYyMSA4MyAzODEuMTUzIDgzIDM2NS41NjdaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjMyLjI5MSA0MTNWMjUwLjA4MkMyNDQuNjg0IDI1NC42MTQgMjUwLjE0OCAyNTQuNjE0IDI2My4zNzEgMjUwLjA4MlY0MTNIMjMyLjI5MVpNMjQ3LjUgMjM5LjMxM0MyNDEuOTkgMjM5LjMxMyAyMzcuMTQgMjM3LjMxMyAyMzIuOTUyIDIzMy4zMTZDMjI4Ljk4NCAyMjkuMDk1IDIyNyAyMjQuMjA5IDIyNyAyMTguNjU2QzIyNyAyMTIuODgyIDIyOC45ODQgMjA3Ljk5NSAyMzIuOTUyIDIwMy45OTdDMjM3LjE0IDE5OS45OTkgMjQxLjk5IDE5OCAyNDcuNSAxOThDMjUzLjIzMSAxOTggMjU4LjA4IDE5OS45OTkgMjYyLjA0OSAyMDMuOTk3QzI2Ni4wMTYgMjA3Ljk5NSAyNjggMjEyLjg4MiAyNjggMjE4LjY1NkMyNjggMjI0LjIwOSAyNjYuMDE2IDIyOS4wOTUgMjYyLjA0OSAyMzMuMzE2QzI1OC4wOCAyMzcuMzEzIDI1My4yMzEgMjM5LjMxMyAyNDcuNSAyMzkuMzEzWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTMxOS4zMzMgNDEzSDI4OFYyNDkuNjc2SDMxNlYyNzcuMjMzQzMxOS4zMzMgMjY4LjEwNCAzMjUuNzc4IDI2MC4zNjQgMzM0LjY2NyAyNTQuMzUyQzM0My43NzggMjQ4LjExNyAzNTQuNzc4IDI0NSAzNjcuNjY3IDI0NUMzODIuMTExIDI0NSAzOTQuMTEyIDI0OC44OTcgNDAzLjY2NyAyNTYuNjlDNDEzLjIyMiAyNjQuNDg0IDQxOS40NDQgMjc0LjgzNyA0MjIuMzM0IDI4Ny43NTJINDE2LjY2N0M0MTguODg5IDI3NC44MzcgNDI1IDI2NC40ODQgNDM1IDI1Ni42OUM0NDUgMjQ4Ljg5NyA0NTcuMzM0IDI0NSA0NzIgMjQ1QzQ5MC42NjYgMjQ1IDUwNS4zMzQgMjUwLjQ1NSA1MTYgMjYxLjM2NkM1MjYuNjY3IDI3Mi4yNzYgNTMyIDI4Ny4xOTUgNTMyIDMwNi4xMjFWNDEzSDUwMS4zMzNWMzEzLjgwNEM1MDEuMzMzIDMwMC44ODkgNDk4IDI5MC45ODEgNDkxLjMzMyAyODQuMDc4QzQ4NC44ODkgMjc2Ljk1MiA0NzYuMTExIDI3My4zOSA0NjUgMjczLjM5QzQ1Ny4yMjIgMjczLjM5IDQ1MC4zMzMgMjc1LjE3MSA0NDQuMzM0IDI3OC43MzRDNDM4LjU1NiAyODIuMDc0IDQzNCAyODYuOTcyIDQzMC42NjcgMjkzLjQzQzQyNy4zMzMgMjk5Ljg4NyA0MjUuNjY3IDMwNy40NTcgNDI1LjY2NyAzMTYuMTQxVjQxM0gzOTQuNjY3VjMxMy40NjlDMzk0LjY2NyAzMDAuNTU1IDM5MS40NDUgMjkwLjc1OCAzODUgMjg0LjA3OEMzNzguNTU2IDI3Ny4xNzUgMzY5Ljc3OCAyNzMuNzI0IDM1OC42NjcgMjczLjcyNEMzNTAuODg5IDI3My43MjQgMzQ0IDI3NS41MDUgMzM4IDI3OS4wNjhDMzMyLjIyMiAyODIuNDA4IDMyNy42NjcgMjg3LjMwNyAzMjQuMzMzIDI5My43NjNDMzIxIDI5OS45OTggMzE5LjMzMyAzMDcuNDU3IDMxOS4zMzMgMzE2LjE0MVY0MTNaIiBmaWxsPSJ3aGl0ZSIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzExNTlfMzEzIj4KPHJlY3Qgd2lkdGg9IjYxNiIgaGVpZ2h0PSI2MTYiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==&logoColor=white" alt="Sim.ai"></a>
|
|
|
|
### Self-hosted: NPM Package
|
|
|
|
```bash
|
|
npx simstudio
|
|
```
|
|
→ http://localhost:3000
|
|
|
|
#### Note
|
|
Docker must be installed and running on your machine.
|
|
|
|
#### Options
|
|
|
|
| Flag | Description |
|
|
|------|-------------|
|
|
| `-p, --port <port>` | Port to run Sim on (default `3000`) |
|
|
| `--no-pull` | Skip pulling latest Docker images |
|
|
|
|
### Self-hosted: Docker Compose
|
|
|
|
```bash
|
|
# Clone the repository
|
|
git clone https://github.com/simstudioai/sim.git
|
|
|
|
# Navigate to the project directory
|
|
cd sim
|
|
|
|
# Start Sim
|
|
docker compose -f docker-compose.prod.yml up -d
|
|
```
|
|
|
|
Access the application at [http://localhost:3000/](http://localhost:3000/)
|
|
|
|
#### Using Local Models with Ollama
|
|
|
|
Run Sim with local AI models using [Ollama](https://ollama.ai) - no external APIs required:
|
|
|
|
```bash
|
|
# Start with GPU support (automatically downloads gemma3:4b model)
|
|
docker compose -f docker-compose.ollama.yml --profile setup up -d
|
|
|
|
# For CPU-only systems:
|
|
docker compose -f docker-compose.ollama.yml --profile cpu --profile setup up -d
|
|
```
|
|
|
|
Wait for the model to download, then visit [http://localhost:3000](http://localhost:3000). Add more models with:
|
|
```bash
|
|
docker compose -f docker-compose.ollama.yml exec ollama ollama pull llama3.1:8b
|
|
```
|
|
|
|
#### Using an External Ollama Instance
|
|
|
|
If you already have Ollama running on your host machine (outside Docker), you need to configure the `OLLAMA_URL` to use `host.docker.internal` instead of `localhost`:
|
|
|
|
```bash
|
|
# Docker Desktop (macOS/Windows)
|
|
OLLAMA_URL=http://host.docker.internal:11434 docker compose -f docker-compose.prod.yml up -d
|
|
|
|
# Linux (add extra_hosts or use host IP)
|
|
docker compose -f docker-compose.prod.yml up -d # Then set OLLAMA_URL to your host's IP
|
|
```
|
|
|
|
**Why?** When running inside Docker, `localhost` refers to the container itself, not your host machine. `host.docker.internal` is a special DNS name that resolves to the host.
|
|
|
|
For Linux users, you can either:
|
|
- Use your host machine's actual IP address (e.g., `http://192.168.1.100:11434`)
|
|
- Add `extra_hosts: ["host.docker.internal:host-gateway"]` to the simstudio service in your compose file
|
|
|
|
#### Using vLLM
|
|
|
|
Sim also supports [vLLM](https://docs.vllm.ai/) for self-hosted models with OpenAI-compatible API:
|
|
|
|
```bash
|
|
# Set these environment variables
|
|
VLLM_BASE_URL=http://your-vllm-server:8000
|
|
VLLM_API_KEY=your_optional_api_key # Only if your vLLM instance requires auth
|
|
```
|
|
|
|
When running with Docker, use `host.docker.internal` if vLLM is on your host machine (same as Ollama above).
|
|
|
|
### Self-hosted: Dev Containers
|
|
|
|
1. Open VS Code with the [Remote - Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
|
|
2. Open the project and click "Reopen in Container" when prompted
|
|
3. Run `bun run dev:full` in the terminal or use the `sim-start` alias
|
|
- This starts both the main application and the realtime socket server
|
|
|
|
### Self-hosted: Manual Setup
|
|
|
|
**Requirements:**
|
|
- [Bun](https://bun.sh/) runtime
|
|
- [Node.js](https://nodejs.org/) v20+ (required for sandboxed code execution)
|
|
- PostgreSQL 12+ with [pgvector extension](https://github.com/pgvector/pgvector) (required for AI embeddings)
|
|
|
|
**Note:** Sim uses vector embeddings for AI features like knowledge bases and semantic search, which requires the `pgvector` PostgreSQL extension.
|
|
|
|
1. Clone and install dependencies:
|
|
|
|
```bash
|
|
git clone https://github.com/simstudioai/sim.git
|
|
cd sim
|
|
bun install
|
|
```
|
|
|
|
2. Set up PostgreSQL with pgvector:
|
|
|
|
You need PostgreSQL with the `vector` extension for embedding support. Choose one option:
|
|
|
|
**Option A: Using Docker (Recommended)**
|
|
```bash
|
|
# Start PostgreSQL with pgvector extension
|
|
docker run --name simstudio-db \
|
|
-e POSTGRES_PASSWORD=your_password \
|
|
-e POSTGRES_DB=simstudio \
|
|
-p 5432:5432 -d \
|
|
pgvector/pgvector:pg17
|
|
```
|
|
|
|
**Option B: Manual Installation**
|
|
- Install PostgreSQL 12+ and the pgvector extension
|
|
- See [pgvector installation guide](https://github.com/pgvector/pgvector#installation)
|
|
|
|
3. Set up environment:
|
|
|
|
```bash
|
|
cd apps/sim
|
|
cp .env.example .env # Configure with required variables (DATABASE_URL, BETTER_AUTH_SECRET, BETTER_AUTH_URL)
|
|
```
|
|
|
|
Update your `.env` file with the database URL:
|
|
```bash
|
|
DATABASE_URL="postgresql://postgres:your_password@localhost:5432/simstudio"
|
|
```
|
|
|
|
4. Set up the database:
|
|
|
|
First, configure the database package environment:
|
|
```bash
|
|
cd packages/db
|
|
cp .env.example .env
|
|
```
|
|
|
|
Update your `packages/db/.env` file with the database URL:
|
|
```bash
|
|
DATABASE_URL="postgresql://postgres:your_password@localhost:5432/simstudio"
|
|
```
|
|
|
|
Then run the migrations:
|
|
```bash
|
|
cd packages/db # Required so drizzle picks correct .env file
|
|
bunx drizzle-kit migrate --config=./drizzle.config.ts
|
|
```
|
|
|
|
5. Start the development servers:
|
|
|
|
**Recommended approach - run both servers together (from project root):**
|
|
|
|
```bash
|
|
bun run dev:full
|
|
```
|
|
|
|
This starts both the main Next.js application and the realtime socket server required for full functionality.
|
|
|
|
**Alternative - run servers separately:**
|
|
|
|
Next.js app (from project root):
|
|
```bash
|
|
bun run dev
|
|
```
|
|
|
|
Realtime socket server (from `apps/sim` directory in a separate terminal):
|
|
```bash
|
|
cd apps/sim
|
|
bun run dev:sockets
|
|
```
|
|
|
|
## Copilot API Keys
|
|
|
|
Copilot is a Sim-managed service. To use Copilot on a self-hosted instance:
|
|
|
|
- Go to https://sim.ai → Settings → Copilot and generate a Copilot API key
|
|
- Set `COPILOT_API_KEY` environment variable in your self-hosted apps/sim/.env file to that value
|
|
|
|
## Environment Variables
|
|
|
|
Key environment variables for self-hosted deployments (see `apps/sim/.env.example` for full list):
|
|
|
|
| Variable | Required | Description |
|
|
|----------|----------|-------------|
|
|
| `DATABASE_URL` | Yes | PostgreSQL connection string with pgvector |
|
|
| `BETTER_AUTH_SECRET` | Yes | Auth secret (`openssl rand -hex 32`) |
|
|
| `BETTER_AUTH_URL` | Yes | Your app URL (e.g., `http://localhost:3000`) |
|
|
| `NEXT_PUBLIC_APP_URL` | Yes | Public app URL (same as above) |
|
|
| `ENCRYPTION_KEY` | Yes | Encryption key (`openssl rand -hex 32`) |
|
|
| `OLLAMA_URL` | No | Ollama server URL (default: `http://localhost:11434`) |
|
|
| `VLLM_BASE_URL` | No | vLLM server URL for self-hosted models |
|
|
| `COPILOT_API_KEY` | No | API key from sim.ai for Copilot features |
|
|
|
|
## Troubleshooting
|
|
|
|
### Ollama models not showing in dropdown (Docker)
|
|
|
|
If you're running Ollama on your host machine and Sim in Docker, change `OLLAMA_URL` from `localhost` to `host.docker.internal`:
|
|
|
|
```bash
|
|
OLLAMA_URL=http://host.docker.internal:11434 docker compose -f docker-compose.prod.yml up -d
|
|
```
|
|
|
|
See [Using an External Ollama Instance](#using-an-external-ollama-instance) for details.
|
|
|
|
### Database connection issues
|
|
|
|
Ensure PostgreSQL has the pgvector extension installed. When using Docker, wait for the database to be healthy before running migrations.
|
|
|
|
### Port conflicts
|
|
|
|
If ports 3000, 3002, or 5432 are in use, configure alternatives:
|
|
|
|
```bash
|
|
# Custom ports
|
|
NEXT_PUBLIC_APP_URL=http://localhost:3100 POSTGRES_PORT=5433 docker compose up -d
|
|
```
|
|
|
|
## Tech Stack
|
|
|
|
- **Framework**: [Next.js](https://nextjs.org/) (App Router)
|
|
- **Runtime**: [Bun](https://bun.sh/)
|
|
- **Database**: PostgreSQL with [Drizzle ORM](https://orm.drizzle.team)
|
|
- **Authentication**: [Better Auth](https://better-auth.com)
|
|
- **UI**: [Shadcn](https://ui.shadcn.com/), [Tailwind CSS](https://tailwindcss.com)
|
|
- **State Management**: [Zustand](https://zustand-demo.pmnd.rs/)
|
|
- **Flow Editor**: [ReactFlow](https://reactflow.dev/)
|
|
- **Docs**: [Fumadocs](https://fumadocs.vercel.app/)
|
|
- **Monorepo**: [Turborepo](https://turborepo.org/)
|
|
- **Realtime**: [Socket.io](https://socket.io/)
|
|
- **Background Jobs**: [Trigger.dev](https://trigger.dev/)
|
|
- **Remote Code Execution**: [E2B](https://www.e2b.dev/)
|
|
|
|
## Contributing
|
|
|
|
We welcome contributions! Please see our [Contributing Guide](.github/CONTRIBUTING.md) for details.
|
|
|
|
## License
|
|
|
|
This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.
|
|
|
|
<p align="center">Made with ❤️ by the Sim Team</p>
|