* docs(self-hosting): correct what a server change clears, and the cert requirement The page said the built-in browser's profile survives a server change. It does not — the teardown clears the browser's saved sessions and the agent's folder grants along with the saved route, because those are capabilities granted to a specific deployment. The page now lists what is cleared and what is kept, says why, and notes that a change which cannot complete is refused rather than half-applied. Adds two things a self-hoster hits in practice. Certificate errors are rejected outright with no "continue anyway", so a private CA that is not in the system trust store will not load however correct the URL is — worth saying, since a private CA is a normal self-host setup. And packaging your own shell needs Xcode 26 or newer, which otherwise fails with an opaque actool error. Also notes that the CLI asks which deployment you mean when a machine has more than one configuration, and states signing/notarization for a self-built shell as a requirement rather than predicting what happens without credentials. * docs(self-hosting): point custom builds at package:mac, not package:share package:share is the "send someone a build to try" path. It passes -c.mac.timestamp=none to skip the per-file round trip to Apple's timestamp authority, and its own docstring notes distribution builds need those timestamps. Apple's notary service requires a secure timestamp, so a build made that way cannot be notarized however many credentials the operator supplies — which is exactly what the section was telling them to do. package:mac inherits notarize and hardenedRuntime from electron-builder.yml and leaves timestamps on, and bun run build honours SIM_DESKTOP_DEFAULT_ORIGIN the same way, so the baked-origin instruction is unchanged. Its artifact path and name differ from the share script's per-channel overrides, so those are corrected too, and the two stacked warnings are merged into one. * docs(self-hosting): spell out that APPLE_API_KEY is a path to the .p8 The variable holds an absolute filesystem path to the App Store Connect key file, not the key material, and @electron/notarize reads it through Node fs so a leading ~ is not expanded — the release workflow carries a comment saying exactly that. Listed alongside the other credentials with no explanation, it reads like somewhere to paste the key, and notarization then fails while every variable looks set.
A workspace to build, deploy and manage AI agents and workflows.
Quickstart
Cloud-hosted: sim.ai
Self-hosted
npx sim-setup
Capabilities
- Connect 1,000+ integrations and every major LLM
- Add Slack, Notion, HubSpot, Salesforce, databases, and more
- Build agents visually, conversationally, or with code
- Ingest files, knowledge bases, and structured table data
- Monitor runs, logs, schedules, and workflow activity
One workspace, every surface
Chat and workflows are just the start — tables, files, and knowledge all live in the same workspace.
Tables — a database, built in |
Files — one store for your team and every agent |
Knowledge — your agents' memory |
Self-hosting
Requirements: Node.js 20+ and Docker.
npx sim-setup is an interactive wizard that creates a small sim/ deployment directory, provisions the database, generates secrets, writes .env, connects a Chat API key, and starts the published Sim images with Docker Compose. It does not clone the repository.
When it finishes, open http://localhost:3000.
Inside a cloned Sim repository, run bun run sim-setup to unlock the source-only local development and Kubernetes modes.
Reconfigure an optional capability without rerunning the full wizard:
npx sim-setup config
npx sim-setup add email
npx sim-setup add storage
npx sim-setup add sandbox
npx sim-setup add jobs
npx sim-setup add cache
npx sim-setup add knowledge
npx sim-setup add chat
npx sim-setup add llm
npx sim-setup add integration slack
npx sim-setup config detects the effective local-dev, Docker Compose, or current-context
Helm configuration and reports configured, missing, or invalid capabilities and OAuth
integrations without printing credential values. This is separate from npx sim-setup status,
which reports whether installed services are running and healthy.
Manage your install from its directory:
npx sim-setup start | stop | restart # bring your install up / down / cycle
npx sim-setup update # pull and apply Compose images
npx sim-setup status # what's installed and healthy
npx sim-setup logs # follow logs
npx sim-setup doctor # diagnose configuration problems
npx sim-setup down # remove containers (data kept)
npx sim-setup reset # archive .env and wipe managed data
The setup package detects how you're running and acts accordingly. Use --dir <path> to create or manage a deployment somewhere other than ./sim.
Sim also supports local models via Ollama and vLLM. See the self-hosting docs for details.
Chat API Keys
Chat is a Sim-managed service. npx sim-setup connects a Chat API key for you — sign in when it opens your browser and the key is stored automatically. To view, create, or revoke keys later, go to sim.ai/selfhost/settings/chat-keys.
Environment Variables
See the environment variables reference for the full list, or apps/sim/.env.example for defaults.
Tech Stack
Next.js · Bun · PostgreSQL · Drizzle · Better Auth · Tailwind — and the rest of the stack
- Framework: Next.js (App Router)
- Runtime: Bun
- Database: PostgreSQL with Drizzle ORM
- Authentication: Better Auth
- Schema Validation: Zod
- UI: Shadcn, Tailwind CSS
- Streaming Markdown: Streamdown
- State Management: Zustand, TanStack Query
- Flow Editor: ReactFlow
- Docs: Fumadocs
- Monorepo: Turborepo
- Realtime: Socket.io
- Background Jobs: Trigger.dev
- Remote Code Execution: E2B
- Isolated Code Execution: isolated-vm
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.




