* feat: skills import, MCP modal updates, wordmark icon, tool-input improvements - Add skills import functionality (route + components + utils) - Update MCP deploy modal - Add Wordmark emcn icon + logo SVG assets - Improve tool-input component - Update README branding to new wordmark - Add ban-spam-accounts admin script * fix: resolve build error and audit findings from simplify review - Add BUILT_IN_TOOL_TYPES export to blocks/utils.ts (was removed from tool-input.tsx but never added to the new import target — caused build error "Export BUILT_IN_TOOL_TYPES doesn't exist in target module") - Export Wordmark from emcn icons barrel (index.ts) - Derive isDragging from dragCounter in skill-import.tsx instead of maintaining redundant state that could desync - Replace manual AbortController/setTimeout with AbortSignal.timeout() in skills import API route (Node 17.3+ supported, cleaner no-cleanup) - Use useId() for SVG gradient ID in wordmark.tsx to prevent duplicate ID collisions if rendered multiple times on the same page * fix(scripts): fix docs mismatch and N+1 query in ban-spam-accounts - Fix comment: default pattern is @vapu.xyz, not @sharebot.net - Replace per-user stats loop with a single aggregated JOIN query * feat: wire wordmark into sidebar, fix credential selector modal dispatch - Show Wordmark (icon + text) in the expanded sidebar instead of the bare Sim icon; collapsed state keeps the small Sim icon unchanged - Untrack scripts/ban-spam-accounts.ts (gitignored; one-off script) - Credential selector: open OAuthRequiredModal inline instead of navigating to Settings → Integrations (matches MCP/tool-input pattern) - Credential selector: update billing import from getSubscriptionAccessState to getSubscriptionStatus; drop writePendingCredentialCreateRequest and useSettingsNavigation dependencies * feat(misc): misc UX/UI improvements * more random fixes * more random fixes * fix: address PR review findings from cursor bugbot - settings-sidebar: use getSubscriptionAccessState instead of getSubscriptionStatus so billingBlocked and status validity are checked; add requiresMax gating so max-plan-only nav items (inbox) are hidden for lower-tier users - credential-selector: same getSubscriptionAccessState migration for credential sets visibility check - mothership chats PATCH: change else if to if for isUnread so both title and isUnread can be updated in a single request - skills import: check Content-Length header before reading response body to avoid loading oversized files into memory * fix(skills): add ZIP file size guard before extraction Checks file.size > 5 MB before calling extractSkillFromZip to prevent zip bombs from exhausting browser memory at the client-side upload path. * feat(settings-sidebar): show locked upsell items with plan badge Sim Mailer (requiresMax) and Email Polling (requiresTeam) now always appear in the settings sidebar when billing is enabled and the deployment is hosted. If the user lacks the required plan they see a small MAX / TEAM badge next to the label and are taken to the page which already contains the upgrade prompt. Enterprise (Access Control, SSO) and Team management stay hard-hidden for lower tiers. Admin/superuser items stay truly hidden. * fix(settings-sidebar): remove flex-1 from label span to fix text centering * feat(settings-sidebar): remove team gate from email polling, keep only mailer max gate * feat(subscription): billing details layout and Enterprise card improvements - Move Enterprise plan card into the plan grid (auto-fit columns) instead of a separate standalone section below billing details - Refactor billing details section: remove outer border/background, separate each row with top border + padding for cleaner separation - Update button variants: Add Credits → active, Invoices → active * fix(mothership): prevent lastSeenAt conflict when both title and isUnread are patched together Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(sidebar): prevent double-save race in flyout inline rename on Enter+blur Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(skills): normalize CRLF line endings before parsing SKILL.md frontmatter Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
11 KiB
The open-source platform to build AI agents and run your agentic workforce. Connect 1,000+ integrations and LLMs to orchestrate agentic workflows.
Build Workflows with Ease
Design agent workflows visually on a canvas—connect agents, tools, and blocks, then run them instantly.
Supercharge with Copilot
Leverage Copilot to generate nodes, fix errors, and iterate on flows directly from natural language.
Integrate Vector Databases
Upload documents to a vector store and let agents answer questions grounded in your specific content.
Quickstart
Cloud-hosted: sim.ai
Self-hosted: NPM Package
npx simstudio
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
git clone https://github.com/simstudioai/sim.git && cd sim
docker compose -f docker-compose.prod.yml up -d
Sim also supports local models via Ollama and vLLM — see the Docker self-hosting docs for setup details.
Self-hosted: Manual Setup
Requirements: Bun, Node.js v20+, PostgreSQL 12+ with pgvector
- Clone and install:
git clone https://github.com/simstudioai/sim.git
cd sim
bun install
- Set up PostgreSQL with pgvector:
docker run --name simstudio-db -e POSTGRES_PASSWORD=your_password -e POSTGRES_DB=simstudio -p 5432:5432 -d pgvector/pgvector:pg17
Or install manually via the pgvector guide.
- Configure environment:
cp apps/sim/.env.example apps/sim/.env
cp packages/db/.env.example packages/db/.env
# Edit both .env files to set DATABASE_URL="postgresql://postgres:your_password@localhost:5432/simstudio"
- Run migrations:
cd packages/db && bunx drizzle-kit migrate --config=./drizzle.config.ts
- Start development servers:
bun run dev:full # Starts both Next.js app and realtime socket server
Or run separately: bun run dev (Next.js) and cd apps/sim && bun run dev:sockets (realtime).
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_KEYenvironment variable in your self-hosted apps/sim/.env file to that value
Environment Variables
See the environment variables reference for the full list, or apps/sim/.env.example for defaults.
Tech Stack
- Framework: Next.js (App Router)
- Runtime: Bun
- Database: PostgreSQL with Drizzle ORM
- Authentication: Better Auth
- UI: Shadcn, Tailwind CSS
- State Management: Zustand
- Flow Editor: ReactFlow
- Docs: Fumadocs
- Monorepo: Turborepo
- Realtime: Socket.io
- Background Jobs: Trigger.dev
- Remote Code Execution: E2B
Contributing
We welcome contributions! Please see our Contributing Guide for details.
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Made with ❤️ by the Sim Team


