Skip to content

Commit 5e8c843

Browse files
authored
v0.5.59: a2a support, documentation
2 parents 7bf3d73 + 4be4203 commit 5e8c843

File tree

141 files changed

+18809
-995
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

141 files changed

+18809
-995
lines changed

.claude/commands/add-block.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
---
2-
description: Create a block configuration for a Sim Studio integration with proper subBlocks, conditions, and tool wiring
2+
description: Create a block configuration for a Sim integration with proper subBlocks, conditions, and tool wiring
33
argument-hint: <service-name>
44
---
55

66
# Add Block Skill
77

8-
You are an expert at creating block configurations for Sim Studio. You understand the serializer, subBlock types, conditions, dependsOn, modes, and all UI patterns.
8+
You are an expert at creating block configurations for Sim. You understand the serializer, subBlock types, conditions, dependsOn, modes, and all UI patterns.
99

1010
## Your Task
1111

.claude/commands/add-integration.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
---
2-
description: Add a complete integration to Sim Studio (tools, block, icon, registration)
2+
description: Add a complete integration to Sim (tools, block, icon, registration)
33
argument-hint: <service-name> [api-docs-url]
44
---
55

66
# Add Integration Skill
77

8-
You are an expert at adding complete integrations to Sim Studio. This skill orchestrates the full process of adding a new service integration.
8+
You are an expert at adding complete integrations to Sim. This skill orchestrates the full process of adding a new service integration.
99

1010
## Overview
1111

.claude/commands/add-tools.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
---
2-
description: Create tool configurations for a Sim Studio integration by reading API docs
2+
description: Create tool configurations for a Sim integration by reading API docs
33
argument-hint: <service-name> [api-docs-url]
44
---
55

66
# Add Tools Skill
77

8-
You are an expert at creating tool configurations for Sim Studio integrations. Your job is to read API documentation and create properly structured tool files.
8+
You are an expert at creating tool configurations for Sim integrations. Your job is to read API documentation and create properly structured tool files.
99

1010
## Your Task
1111

.claude/commands/add-trigger.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
---
2-
description: Create webhook triggers for a Sim Studio integration using the generic trigger builder
2+
description: Create webhook triggers for a Sim integration using the generic trigger builder
33
argument-hint: <service-name>
44
---
55

66
# Add Trigger Skill
77

8-
You are an expert at creating webhook triggers for Sim Studio. You understand the trigger system, the generic `buildTriggerSubBlocks` helper, and how triggers connect to blocks.
8+
You are an expert at creating webhook triggers for Sim. You understand the trigger system, the generic `buildTriggerSubBlocks` helper, and how triggers connect to blocks.
99

1010
## Your Task
1111

.github/workflows/test-build.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,41 @@ jobs:
3838
- name: Install dependencies
3939
run: bun install --frozen-lockfile
4040

41+
- name: Validate feature flags
42+
run: |
43+
FILE="apps/sim/lib/core/config/feature-flags.ts"
44+
ERRORS=""
45+
46+
echo "Checking for hardcoded boolean feature flags..."
47+
48+
# Use perl for multiline matching to catch both:
49+
# export const isHosted = true
50+
# export const isHosted =
51+
# true
52+
HARDCODED=$(perl -0777 -ne 'while (/export const (is[A-Za-z]+)\s*=\s*\n?\s*(true|false)\b/g) { print " $1 = $2\n" }' "$FILE")
53+
54+
if [ -n "$HARDCODED" ]; then
55+
ERRORS="${ERRORS}\n❌ Feature flags must not be hardcoded to boolean literals!\n\nFound hardcoded flags:\n${HARDCODED}\n\nFeature flags should derive their values from environment variables.\n"
56+
fi
57+
58+
echo "Checking feature flag naming conventions..."
59+
60+
# Check that all export const (except functions) start with 'is'
61+
# This finds exports like "export const someFlag" that don't start with "is" or "get"
62+
BAD_NAMES=$(grep -E "^export const [a-z]" "$FILE" | grep -vE "^export const (is|get)" | sed 's/export const \([a-zA-Z]*\).*/ \1/')
63+
64+
if [ -n "$BAD_NAMES" ]; then
65+
ERRORS="${ERRORS}\n❌ Feature flags must use 'is' prefix for boolean flags!\n\nFound incorrectly named flags:\n${BAD_NAMES}\n\nExample: 'hostedMode' should be 'isHostedMode'\n"
66+
fi
67+
68+
if [ -n "$ERRORS" ]; then
69+
echo ""
70+
echo -e "$ERRORS"
71+
exit 1
72+
fi
73+
74+
echo "✅ All feature flags are properly configured"
75+
4176
- name: Lint code
4277
run: bun run lint:check
4378

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Sim Studio Development Guidelines
1+
# Sim Development Guidelines
22

33
You are a professional software engineer. All code must follow best practices: accurate, readable, clean, and efficient.
44

README.md

Lines changed: 26 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@
1313
<a href="https://docs.sim.ai" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/Docs-6F3DFA.svg" alt="Documentation"></a>
1414
</p>
1515

16+
<p align="center">
17+
<a href="https://cursor.com/link/prompt?text=Help%20me%20set%20up%20Sim%20Studio%20locally.%20Follow%20these%20steps%3A%0A%0A1.%20First%2C%20verify%20Docker%20is%20installed%20and%20running%3A%0A%20%20%20docker%20--version%0A%20%20%20docker%20info%0A%0A2.%20Clone%20the%20repository%3A%0A%20%20%20git%20clone%20https%3A%2F%2Fgithub.com%2Fsimstudioai%2Fsim.git%0A%20%20%20cd%20sim%0A%0A3.%20Start%20the%20services%20with%20Docker%20Compose%3A%0A%20%20%20docker%20compose%20-f%20docker-compose.prod.yml%20up%20-d%0A%0A4.%20Wait%20for%20all%20containers%20to%20be%20healthy%20(this%20may%20take%201-2%20minutes)%3A%0A%20%20%20docker%20compose%20-f%20docker-compose.prod.yml%20ps%0A%0A5.%20Verify%20the%20app%20is%20accessible%20at%20http%3A%2F%2Flocalhost%3A3000%0A%0AIf%20there%20are%20any%20errors%2C%20help%20me%20troubleshoot%20them.%20Common%20issues%3A%0A-%20Port%203000%2C%203002%2C%20or%205432%20already%20in%20use%0A-%20Docker%20not%20running%0A-%20Insufficient%20memory%20(needs%2012GB%2B%20RAM)%0A%0AFor%20local%20AI%20models%20with%20Ollama%2C%20use%20this%20instead%20of%20step%203%3A%0A%20%20%20docker%20compose%20-f%20docker-compose.ollama.yml%20--profile%20setup%20up%20-d"><img src="https://img.shields.io/badge/Set%20Up%20with-Cursor-000000?logo=cursor&logoColor=white" alt="Set Up with Cursor"></a>
18+
</p>
19+
1620
### Build Workflows with Ease
1721
Design agent workflows visually on a canvas—connect agents, tools, and blocks, then run them instantly.
1822

@@ -60,17 +64,11 @@ Docker must be installed and running on your machine.
6064
### Self-hosted: Docker Compose
6165

6266
```bash
63-
# Clone the repository
64-
git clone https://github.com/simstudioai/sim.git
65-
66-
# Navigate to the project directory
67-
cd sim
68-
69-
# Start Sim
67+
git clone https://github.com/simstudioai/sim.git && cd sim
7068
docker compose -f docker-compose.prod.yml up -d
7169
```
7270

73-
Access the application at [http://localhost:3000/](http://localhost:3000/)
71+
Open [http://localhost:3000](http://localhost:3000)
7472

7573
#### Using Local Models with Ollama
7674

@@ -91,33 +89,17 @@ docker compose -f docker-compose.ollama.yml exec ollama ollama pull llama3.1:8b
9189

9290
#### Using an External Ollama Instance
9391

94-
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`:
92+
If Ollama is running on your host machine, use `host.docker.internal` instead of `localhost`:
9593

9694
```bash
97-
# Docker Desktop (macOS/Windows)
9895
OLLAMA_URL=http://host.docker.internal:11434 docker compose -f docker-compose.prod.yml up -d
99-
100-
# Linux (add extra_hosts or use host IP)
101-
docker compose -f docker-compose.prod.yml up -d # Then set OLLAMA_URL to your host's IP
10296
```
10397

104-
**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.
105-
106-
For Linux users, you can either:
107-
- Use your host machine's actual IP address (e.g., `http://192.168.1.100:11434`)
108-
- Add `extra_hosts: ["host.docker.internal:host-gateway"]` to the simstudio service in your compose file
98+
On Linux, use your host's IP address or add `extra_hosts: ["host.docker.internal:host-gateway"]` to the compose file.
10999

110100
#### Using vLLM
111101

112-
Sim also supports [vLLM](https://docs.vllm.ai/) for self-hosted models with OpenAI-compatible API:
113-
114-
```bash
115-
# Set these environment variables
116-
VLLM_BASE_URL=http://your-vllm-server:8000
117-
VLLM_API_KEY=your_optional_api_key # Only if your vLLM instance requires auth
118-
```
119-
120-
When running with Docker, use `host.docker.internal` if vLLM is on your host machine (same as Ollama above).
102+
Sim supports [vLLM](https://docs.vllm.ai/) for self-hosted models. Set `VLLM_BASE_URL` and optionally `VLLM_API_KEY` in your environment.
121103

122104
### Self-hosted: Dev Containers
123105

@@ -128,14 +110,9 @@ When running with Docker, use `host.docker.internal` if vLLM is on your host mac
128110

129111
### Self-hosted: Manual Setup
130112

131-
**Requirements:**
132-
- [Bun](https://bun.sh/) runtime
133-
- [Node.js](https://nodejs.org/) v20+ (required for sandboxed code execution)
134-
- PostgreSQL 12+ with [pgvector extension](https://github.com/pgvector/pgvector) (required for AI embeddings)
135-
136-
**Note:** Sim uses vector embeddings for AI features like knowledge bases and semantic search, which requires the `pgvector` PostgreSQL extension.
113+
**Requirements:** [Bun](https://bun.sh/), [Node.js](https://nodejs.org/) v20+, PostgreSQL 12+ with [pgvector](https://github.com/pgvector/pgvector)
137114

138-
1. Clone and install dependencies:
115+
1. Clone and install:
139116

140117
```bash
141118
git clone https://github.com/simstudioai/sim.git
@@ -145,75 +122,33 @@ bun install
145122

146123
2. Set up PostgreSQL with pgvector:
147124

148-
You need PostgreSQL with the `vector` extension for embedding support. Choose one option:
149-
150-
**Option A: Using Docker (Recommended)**
151-
```bash
152-
# Start PostgreSQL with pgvector extension
153-
docker run --name simstudio-db \
154-
-e POSTGRES_PASSWORD=your_password \
155-
-e POSTGRES_DB=simstudio \
156-
-p 5432:5432 -d \
157-
pgvector/pgvector:pg17
158-
```
159-
160-
**Option B: Manual Installation**
161-
- Install PostgreSQL 12+ and the pgvector extension
162-
- See [pgvector installation guide](https://github.com/pgvector/pgvector#installation)
163-
164-
3. Set up environment:
165-
166125
```bash
167-
cd apps/sim
168-
cp .env.example .env # Configure with required variables (DATABASE_URL, BETTER_AUTH_SECRET, BETTER_AUTH_URL)
126+
docker run --name simstudio-db -e POSTGRES_PASSWORD=your_password -e POSTGRES_DB=simstudio -p 5432:5432 -d pgvector/pgvector:pg17
169127
```
170128

171-
Update your `.env` file with the database URL:
172-
```bash
173-
DATABASE_URL="postgresql://postgres:your_password@localhost:5432/simstudio"
174-
```
175-
176-
4. Set up the database:
177-
178-
First, configure the database package environment:
179-
```bash
180-
cd packages/db
181-
cp .env.example .env
182-
```
129+
Or install manually via the [pgvector guide](https://github.com/pgvector/pgvector#installation).
183130

184-
Update your `packages/db/.env` file with the database URL:
185-
```bash
186-
DATABASE_URL="postgresql://postgres:your_password@localhost:5432/simstudio"
187-
```
131+
3. Configure environment:
188132

189-
Then run the migrations:
190133
```bash
191-
cd packages/db # Required so drizzle picks correct .env file
192-
bunx drizzle-kit migrate --config=./drizzle.config.ts
134+
cp apps/sim/.env.example apps/sim/.env
135+
cp packages/db/.env.example packages/db/.env
136+
# Edit both .env files to set DATABASE_URL="postgresql://postgres:your_password@localhost:5432/simstudio"
193137
```
194138

195-
5. Start the development servers:
196-
197-
**Recommended approach - run both servers together (from project root):**
139+
4. Run migrations:
198140

199141
```bash
200-
bun run dev:full
142+
cd packages/db && bunx drizzle-kit migrate --config=./drizzle.config.ts
201143
```
202144

203-
This starts both the main Next.js application and the realtime socket server required for full functionality.
204-
205-
**Alternative - run servers separately:**
145+
5. Start development servers:
206146

207-
Next.js app (from project root):
208147
```bash
209-
bun run dev
148+
bun run dev:full # Starts both Next.js app and realtime socket server
210149
```
211150

212-
Realtime socket server (from `apps/sim` directory in a separate terminal):
213-
```bash
214-
cd apps/sim
215-
bun run dev:sockets
216-
```
151+
Or run separately: `bun run dev` (Next.js) and `cd apps/sim && bun run dev:sockets` (realtime).
217152

218153
## Copilot API Keys
219154

@@ -224,17 +159,17 @@ Copilot is a Sim-managed service. To use Copilot on a self-hosted instance:
224159

225160
## Environment Variables
226161

227-
Key environment variables for self-hosted deployments (see `apps/sim/.env.example` for full list):
162+
Key environment variables for self-hosted deployments. See [`.env.example`](apps/sim/.env.example) for defaults or [`env.ts`](apps/sim/lib/core/config/env.ts) for the full list.
228163

229164
| Variable | Required | Description |
230165
|----------|----------|-------------|
231166
| `DATABASE_URL` | Yes | PostgreSQL connection string with pgvector |
232167
| `BETTER_AUTH_SECRET` | Yes | Auth secret (`openssl rand -hex 32`) |
233168
| `BETTER_AUTH_URL` | Yes | Your app URL (e.g., `http://localhost:3000`) |
234169
| `NEXT_PUBLIC_APP_URL` | Yes | Public app URL (same as above) |
235-
| `ENCRYPTION_KEY` | Yes | Encryption key (`openssl rand -hex 32`) |
236-
| `OLLAMA_URL` | No | Ollama server URL (default: `http://localhost:11434`) |
237-
| `VLLM_BASE_URL` | No | vLLM server URL for self-hosted models |
170+
| `ENCRYPTION_KEY` | Yes | Encrypts environment variables (`openssl rand -hex 32`) |
171+
| `INTERNAL_API_SECRET` | Yes | Encrypts internal API routes (`openssl rand -hex 32`) |
172+
| `API_ENCRYPTION_KEY` | Yes | Encrypts API keys (`openssl rand -hex 32`) |
238173
| `COPILOT_API_KEY` | No | API key from sim.ai for Copilot features |
239174

240175
## Troubleshooting

apps/docs/components/icons.tsx

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4078,6 +4078,31 @@ export function McpIcon(props: SVGProps<SVGSVGElement>) {
40784078
)
40794079
}
40804080

4081+
export function A2AIcon(props: SVGProps<SVGSVGElement>) {
4082+
return (
4083+
<svg {...props} viewBox='0 0 860 860' fill='none' xmlns='http://www.w3.org/2000/svg'>
4084+
<circle cx='544' cy='307' r='27' fill='currentColor' />
4085+
<circle cx='154' cy='307' r='27' fill='currentColor' />
4086+
<circle cx='706' cy='307' r='27' fill='currentColor' />
4087+
<circle cx='316' cy='307' r='27' fill='currentColor' />
4088+
<path
4089+
d='M336.5 191.003H162C97.6588 191.003 45.5 243.162 45.5 307.503C45.5 371.844 97.6442 424.003 161.985 424.003C206.551 424.003 256.288 424.003 296.5 424.003C487.5 424.003 374 191.005 569 191.001C613.886 191 658.966 191 698.025 191C762.366 191.001 814.5 243.16 814.5 307.501C814.5 371.843 762.34 424.003 697.998 424.003H523.5'
4090+
stroke='currentColor'
4091+
strokeWidth='48'
4092+
strokeLinecap='round'
4093+
/>
4094+
<path
4095+
d='M256 510.002C270.359 510.002 282 521.643 282 536.002C282 550.361 270.359 562.002 256 562.002H148C133.641 562.002 122 550.361 122 536.002C122 521.643 133.641 510.002 148 510.002H256ZM712 510.002C726.359 510.002 738 521.643 738 536.002C738 550.361 726.359 562.002 712 562.002H360C345.641 562.002 334 550.361 334 536.002C334 521.643 345.641 510.002 360 510.002H712Z'
4096+
fill='currentColor'
4097+
/>
4098+
<path
4099+
d='M444 628.002C458.359 628.002 470 639.643 470 654.002C470 668.361 458.359 680.002 444 680.002H100C85.6406 680.002 74 668.361 74 654.002C74 639.643 85.6406 628.002 100 628.002H444ZM548 628.002C562.359 628.002 574 639.643 574 654.002C574 668.361 562.359 680.002 548 680.002C533.641 680.002 522 668.361 522 654.002C522 639.643 533.641 628.002 548 628.002ZM760 628.002C774.359 628.002 786 639.643 786 654.002C786 668.361 774.359 680.002 760 680.002H652C637.641 680.002 626 668.361 626 654.002C626 639.643 637.641 628.002 652 628.002H760Z'
4100+
fill='currentColor'
4101+
/>
4102+
</svg>
4103+
)
4104+
}
4105+
40814106
export function WordpressIcon(props: SVGProps<SVGSVGElement>) {
40824107
return (
40834108
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 25.925 25.925'>

apps/docs/components/ui/icon-mapping.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import type { ComponentType, SVGProps } from 'react'
66
import {
7+
A2AIcon,
78
AhrefsIcon,
89
AirtableIcon,
910
ApifyIcon,
@@ -127,6 +128,7 @@ import {
127128
type IconComponent = ComponentType<SVGProps<SVGSVGElement>>
128129

129130
export const blockTypeToIconMap: Record<string, IconComponent> = {
131+
a2a: A2AIcon,
130132
ahrefs: AhrefsIcon,
131133
airtable: AirtableIcon,
132134
apify: ApifyIcon,

apps/docs/content/docs/de/enterprise/index.mdx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ description: Enterprise-Funktionen für Organisationen mit erweiterten
66

77
import { Callout } from 'fumadocs-ui/components/callout'
88

9-
Sim Studio Enterprise bietet erweiterte Funktionen für Organisationen mit erhöhten Sicherheits-, Compliance- und Verwaltungsanforderungen.
9+
Sim Enterprise bietet erweiterte Funktionen für Organisationen mit erhöhten Sicherheits-, Compliance- und Verwaltungsanforderungen.
1010

1111
---
1212

1313
## Bring Your Own Key (BYOK)
1414

15-
Verwenden Sie Ihre eigenen API-Schlüssel für KI-Modellanbieter anstelle der gehosteten Schlüssel von Sim Studio.
15+
Verwenden Sie Ihre eigenen API-Schlüssel für KI-Modellanbieter anstelle der gehosteten Schlüssel von Sim.
1616

1717
### Unterstützte Anbieter
1818

@@ -33,7 +33,7 @@ Verwenden Sie Ihre eigenen API-Schlüssel für KI-Modellanbieter anstelle der ge
3333
BYOK-Schlüssel werden verschlüsselt gespeichert. Nur Organisationsadministratoren und -inhaber können Schlüssel verwalten.
3434
</Callout>
3535

36-
Wenn konfiguriert, verwenden Workflows Ihren Schlüssel anstelle der gehosteten Schlüssel von Sim Studio. Bei Entfernung wechseln Workflows automatisch zu den gehosteten Schlüsseln zurück.
36+
Wenn konfiguriert, verwenden Workflows Ihren Schlüssel anstelle der gehosteten Schlüssel von Sim. Bei Entfernung wechseln Workflows automatisch zu den gehosteten Schlüsseln zurück.
3737

3838
---
3939

@@ -73,5 +73,5 @@ Für selbst gehostete Bereitstellungen können Enterprise-Funktionen über Umgeb
7373
| `DISABLE_INVITATIONS`, `NEXT_PUBLIC_DISABLE_INVITATIONS` | Workspace-/Organisations-Einladungen global deaktivieren |
7474

7575
<Callout type="warn">
76-
BYOK ist nur im gehosteten Sim Studio verfügbar. Selbst gehostete Deployments konfigurieren AI-Provider-Schlüssel direkt über Umgebungsvariablen.
76+
BYOK ist nur im gehosteten Sim verfügbar. Selbst gehostete Deployments konfigurieren AI-Provider-Schlüssel direkt über Umgebungsvariablen.
7777
</Callout>

0 commit comments

Comments
 (0)