Skip to content

Commit f1005dd

Browse files
committed
Merge remote-tracking branch 'origin/staging' into feat/ws-fork-pt-2
2 parents 06343eb + 0613ceb commit f1005dd

187 files changed

Lines changed: 12834 additions & 3069 deletions

File tree

Some content is hidden

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

.claude/rules/sim-settings-pages.md

Lines changed: 44 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,18 @@ paths:
66

77
# Settings Pages
88

9-
Every settings page renders through the shared **`SettingsPanel`** primitive
10-
(`@/app/workspace/[workspaceId]/settings/components/settings-panel`). It owns the
11-
page chrome so pages never hand-roll it: a fixed header bar (right-aligned
12-
actions), a scroll region, and a centered `max-w-[48rem]` content column led by a
13-
**title + description that come from navigation metadata**. Pages render only
14-
their body.
15-
16-
Do NOT hand-roll any of these in a settings page — they are the panel's job:
9+
The Next.js `settings/[section]/layout.tsx` owns all settings page chrome via
10+
`SettingsHeaderShell` — a fixed header bar (a left back chip + right-aligned
11+
action chips), a scroll region, and a centered `max-w-[48rem]` content column led
12+
by a **title + description from navigation metadata**. The chrome stays mounted
13+
across section navigation (it never re-renders or re-lays-out). Each section
14+
renders through the **`SettingsPanel`** registrar
15+
(`@/app/workspace/[workspaceId]/settings/components/settings-panel`), which feeds
16+
the shell its header data and renders only the section body. Sections supply
17+
**data**, never chrome.
18+
19+
Do NOT hand-roll any of these in a settings page — they are owned by the layout
20+
shell (fed through `SettingsPanel`):
1721

1822
- `<div className='flex h-full flex-col bg-[var(--bg)]'>` shell
1923
- the header bar (`flex flex-shrink-0 … px-[16px] pt-[8.5px] pb-[8.5px]`)
@@ -29,11 +33,7 @@ import { SettingsPanel } from '@/app/workspace/[workspaceId]/settings/components
2933

3034
return (
3135
<SettingsPanel
32-
actions={
33-
<Chip leftIcon={Plus} variant='primary' onClick={onCreate}>
34-
Create
35-
</Chip>
36-
}
36+
actions={[{ text: 'Create', icon: Plus, variant: 'primary', onSelect: onCreate }]}
3737
search={{ value: searchTerm, onChange: setSearchTerm, placeholder: 'Search …' }}
3838
>
3939
{/* body only — sections, lists, forms */}
@@ -54,9 +54,22 @@ return (
5454

5555
## `SettingsPanel` props
5656

57-
- `actions?: ReactNode` — right-aligned header chips. Wrap multiple in a fragment;
58-
the slot reserves the 30px chip height even when empty, so vertical rhythm is
59-
identical across pages. Conditional actions are fine: `actions={canManage && <Chip…/>}`.
57+
- `actions?: SettingsAction[]` — right-aligned header chips, **data only**:
58+
`{ text, icon?, variant?: 'primary'|'destructive', active?, onSelect, disabled?, tooltip? }`.
59+
The shell renders each as a `Chip` — never pass JSX, a `<div>`, or `className`
60+
(the locked contract: it's structurally impossible to vibe-code a padding
61+
change). Multiple/conditional actions are a plain array
62+
(`[...(canManage ? [{…}] : []), …]`). Labels are **sentence case** (`Add override`,
63+
not `Add Override`). A disabled action that needs to explain itself sets
64+
`tooltip` (the shell renders the hover tooltip, disabled chip included) — never
65+
hand-roll a tooltip-wrapped chip in `aside`. Save/Discard pairs come from the
66+
`saveDiscardActions()` helper (spread it into `actions`). Only a widget that
67+
genuinely cannot be a chip (e.g. one needing hover-prefetch) goes in `aside`.
68+
- `back?: SettingsBackAction` (`{ text, icon?, onSelect }`) — left-aligned back
69+
chip for a **detail sub-view** (e.g. a selected MCP server, a permission group,
70+
a retention policy). Detail sub-views render through `SettingsPanel` like list
71+
pages — they do NOT hand-roll their own shell.
72+
- `aside?: ReactNode` — escape hatch for the rare non-chip header widget. Keep it rare.
6073
- `search?: { value; onChange: (value: string) => void; placeholder?; disabled? }`
6174
renders the canonical search field directly below the title. Pass `setSearchTerm`
6275
straight to `onChange`. Use this for a standalone search; if search shares a row
@@ -66,8 +79,6 @@ return (
6679
detail sub-view that needs a different heading; normal pages never pass these.
6780
- `scrollContainerRef?: React.Ref<HTMLDivElement>` — forwards a ref to the scroll
6881
region (e.g. programmatic scroll-to-bottom).
69-
- `contentClassName?` — layout/spacing only; reach for it rarely. Prefer the
70-
default `gap-7`.
7182

7283
## Title + description live in navigation metadata
7384

@@ -107,12 +118,11 @@ Any settings surface with editable state uses **one** shared stack — never
107118
hand-roll a Save button, a Discard button, a `beforeunload`, or an "Unsaved
108119
changes" modal:
109120

110-
- **`SaveDiscardActions`** (`…/components/save-discard-actions/save-discard-actions`)
111-
— the canonical dirty-gated **Discard + Save** chip pair. Renders nothing when
112-
`!dirty`; otherwise a fragment so it composes beside sibling chips (a detail
113-
view's Delete / Remove override, a Share chip). Props: `dirty`, `saving`,
114-
`onSave`, `onDiscard`, `saveDisabled?`, `saveLabel?`, `savingLabel?`. Put it in
115-
the `SettingsPanel actions` slot (top-level pages) or the detail header bar.
121+
- **`saveDiscardActions(config)`** (`…/components/save-discard-actions/save-discard-actions`)
122+
— returns the canonical dirty-gated **Discard + Save** `SettingsAction[]` (empty
123+
when not dirty). Spread it into a `SettingsPanel` `actions` array, beside any
124+
sibling actions (a detail view's Delete / Remove override). Config: `dirty`,
125+
`saving`, `onSave`, `onDiscard`, `saveDisabled?`, `saveLabel?`, `savingLabel?`.
116126
- **`useSettingsUnsavedGuard({ isDirty })`** (`…/settings/hooks/use-settings-unsaved-guard`)
117127
— syncs the page's local `isDirty` into the shared `useSettingsDirtyStore` (so
118128
the sidebar's **section-switch** confirm + the centralized `beforeunload` both
@@ -141,14 +151,18 @@ changes" modal:
141151
guards real `router.push` navigation + browser Back via a history sentinel);
142152
it already shares `UnsavedChangesModal`, so copy stays unified.
143153

144-
## Detail sub-views (the one exception)
154+
## Detail sub-views
145155

146156
A drill-down view reached from a list row (selected MCP server, workflow MCP
147-
server, credential set, permission group) keeps its **own** chrome because it
148-
needs a left-aligned back button (`<Chip leftIcon={ArrowLeft}>`), which the panel
149-
header (right-actions only) does not model. Leave those returns as hand-rolled
150-
shells; only the list/main view uses `SettingsPanel`. Gate/early-return states
151-
(not-entitled, loading, upgrade prompts) also stay as-is.
157+
server, credential set, permission group, retention policy) renders through
158+
`SettingsPanel` like a list page: pass `back={{ text, icon: ArrowLeft, onSelect }}`
159+
for the left back chip, `title` (the entity name), and the header `actions`, then
160+
render the body. Do NOT hand-roll a shell or header bar; a tab bar renders as the
161+
first body child. Gate/early-return states (not-entitled, loading, upgrade
162+
prompts) stay as-is.
163+
164+
The route-based credential detail (`settings/secrets/[credentialId]`) is the lone
165+
exception — it lives outside `[section]` and keeps its own `CredentialDetailLayout`.
152166

153167
## Audit checklist
154168

README.md

Lines changed: 32 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,54 @@
11
<p align="center">
2-
<a href="https://sim.ai" target="_blank" rel="noopener noreferrer">
3-
<picture>
4-
<source media="(prefers-color-scheme: dark)" srcset="apps/sim/public/logo/wordmark.svg">
5-
<source media="(prefers-color-scheme: light)" srcset="apps/sim/public/logo/wordmark-dark.svg">
6-
<img src="apps/sim/public/logo/wordmark-dark.svg" alt="Sim Logo" width="380"/>
7-
</picture>
8-
</a>
9-
</p>
10-
11-
<p align="center">The open-source AI workspace where teams build, deploy, and manage AI agents. Build conversationally, visually, or with code. Connect 1,000+ integrations and every major LLM to automate real work.</p>
12-
13-
<p align="center">
14-
<a href="https://sim.ai" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/sim.ai-33c482" alt="Sim.ai"></a>
15-
<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>
16-
<a href="https://x.com/simdotai" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/twitter/follow/simdotai?style=social" alt="Twitter"></a>
17-
<a href="https://docs.sim.ai" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/Docs-33c482.svg" alt="Documentation"></a>
18-
</p>
19-
20-
<p align="center">
21-
<a href="https://deepwiki.com/simstudioai/sim" target="_blank" rel="noopener noreferrer"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki"></a> <a href="https://cursor.com/link/prompt?text=Help%20me%20set%20up%20Sim%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>
22-
</p>
23-
24-
### Build everything in Chat
25-
Your AI command center. Describe what you want in plain language. Sim knows your entire workspace and takes action: building agents, running them, querying data, and more.
26-
27-
<p align="center">
28-
<img src="apps/sim/public/static/mothership.gif" alt="Sim building and running an agent from chat" width="800"/>
29-
</p>
30-
31-
### Create files and documents
32-
Generate documents, reports, and presentations from a single prompt, grounded in your workspace data.
33-
34-
<p align="center">
35-
<img src="apps/sim/public/static/files.gif" alt="Sim generating a document from a prompt" width="800"/>
2+
<a href="https://sim.ai" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/Sim-sim.ai-3B3B3B?labelColor=1A1A1A" alt="Sim.ai"></a>
3+
<a href="https://docs.sim.ai" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/Docs-Read-E6E6E6?labelColor=C3C3C3&color=E6E6E6" alt="Documentation"></a>
4+
<a href="https://discord.gg/Hr4UWYEcTT" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/Discord-Join-E6E6E6?logo=discord&logoColor=1A1A1A&labelColor=C3C3C3&color=E6E6E6" alt="Discord"></a>
5+
<a href="https://x.com/simdotai" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/X-%40simdotai-525252?logo=x&logoColor=white&labelColor=1A1A1A" alt="X"></a>
366
</p>
377

38-
### Ground agents in your knowledge
39-
Upload documents to a knowledge base and let agents answer questions from your own content.
40-
418
<p align="center">
42-
<img src="apps/sim/public/static/knowledge.gif" alt="Creating a knowledge base" width="460"/>
9+
<a href="https://deepwiki.com/simstudioai/sim" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/Ask-DeepWiki-E6E6E6?labelColor=C3C3C3&color=E6E6E6" alt="Ask DeepWiki"></a>
10+
<a href="https://cursor.com/link/prompt?text=Help%20me%20set%20up%20Sim%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-E6E6E6?logo=cursor&logoColor=1A1A1A&labelColor=C3C3C3&color=E6E6E6" alt="Set Up with Cursor"></a>
4311
</p>
4412

45-
### Structured data with Tables
46-
A database, built in. Store, query, and wire structured data into agent runs.
47-
4813
<p align="center">
49-
<img src="apps/sim/public/static/tables.png" alt="Tables view with typed columns" width="800"/>
14+
<a href="https://sim.ai" target="_blank" rel="noopener noreferrer">
15+
<img src="apps/sim/public/static/readme-hero.gif" alt="Sim — your workflow agent for solving automations. Build, deploy, and manage AI agents visually, conversationally, or with code." width="100%"/>
16+
</a>
5017
</p>
5118

52-
### Build visually with Workflows
53-
Prefer a canvas? Design agents block by block in the visual builder, and let Sim generate blocks, wire variables, and fix errors from natural language.
54-
55-
<p align="center">
56-
<img src="apps/sim/public/static/workflow.gif" alt="Workflow builder demo" width="800"/>
57-
</p>
19+
<p align="center">A workspace to build, deploy and manage AI agents and workflows.</p>
5820

5921
## Quickstart
6022

6123
### Cloud-hosted: [sim.ai](https://sim.ai)
6224

63-
<a href="https://sim.ai" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/sim.ai-33c482?logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iNjE2IiBoZWlnaHQ9IjYxNiIgdmlld0JveD0iMCAwIDYxNiA2MTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTU5XzMxMykiPgo8cGF0aCBkPSJNNjE2IDBIMFY2MTZINjE2VjBaIiBmaWxsPSIjMzNjNDgyIi8+CjxwYXRoIGQ9Ik04MyAzNjUuNTY3SDExM0MxMTMgMzczLjgwNSAxMTYgMzgwLjM3MyAxMjIgMzg1LjI3MkMxMjggMzg5Ljk0OCAxMzYuMTExIDM5Mi4yODUgMTQ2LjMzMyAzOTIuMjg1QzE1Ny40NDQgMzkyLjI4NSAxNjYgMzkwLjE3MSAxNzIgMzg1LjkzOUMxNzcuOTk5IDM4MS40ODcgMTgxIDM3NS41ODYgMTgxIDM2OC4yMzlDMTgxIDM2Mi44OTUgMTc5LjMzMyAzNTguNDQyIDE3NiAzNTQuODhDMTcyLjg4OSAzNTEuMzE4IDE2Ny4xMTEgMzQ4LjQyMiAxNTguNjY3IDM0Ni4xOTZMMTMwIDMzOS41MTdDMTE1LjU1NSAzMzUuOTU1IDEwNC43NzggMzMwLjQ5OSA5Ny42NjY1IDMyMy4xNTFDOTAuNzc3NSAzMTUuODA0IDg3LjMzMzQgMzA2LjExOSA4Ny4zMzM0IDI5NC4wOTZDODcuMzMzNCAyODQuMDc2IDg5Ljg4OSAyNzUuMzkyIDk0Ljk5OTYgMjY4LjA0NUMxMDAuMzMzIDI2MC42OTcgMTA3LjU1NSAyNTUuMDIgMTE2LjY2NiAyNTEuMDEyQzEyNiAyNDcuMDA0IDEzNi42NjcgMjQ1IDE0OC42NjYgMjQ1QzE2MC42NjcgMjQ1IDE3MSAyNDcuMTE2IDE3OS42NjcgMjUxLjM0NkMxODguNTU1IDI1NS41NzYgMTk1LjQ0NCAyNjEuNDc3IDIwMC4zMzMgMjY5LjA0N0MyMDUuNDQ0IDI3Ni42MTcgMjA4LjExMSAyODUuNjM0IDIwOC4zMzMgMjk2LjA5OUgxNzguMzMzQzE3OC4xMTEgMjg3LjYzOCAxNzUuMzMzIDI4MS4wNyAxNjkuOTk5IDI3Ni4zOTRDMTY0LjY2NiAyNzEuNzE5IDE1Ny4yMjIgMjY5LjM4MSAxNDcuNjY3IDI2OS4zODFDMTM3Ljg4OSAyNjkuMzgxIDEzMC4zMzMgMjcxLjQ5NiAxMjUgMjc1LjcyNkMxMTkuNjY2IDI3OS45NTcgMTE3IDI4NS43NDYgMTE3IDI5My4wOTNDMTE3IDMwNC4wMDMgMTI1IDMxMS40NjIgMTQxIDMxNS40N0wxNjkuNjY3IDMyMi40ODNDMTgzLjQ0NSAzMjUuNiAxOTMuNzc4IDMzMC43MjIgMjAwLjY2NyAzMzcuODQ3QzIwNy41NTUgMzQ0Ljc0OSAyMTEgMzU0LjIxMiAyMTEgMzY2LjIzNUMyMTEgMzc2LjQ3NyAyMDguMjIyIDM4NS40OTQgMjAyLjY2NiAzOTMuMjg3QzE5Ny4xMTEgNDAwLjg1NyAxODkuNDQ0IDQwNi43NTggMTc5LjY2NyA0MTAuOTg5QzE3MC4xMTEgNDE0Ljk5NiAxNTguNzc4IDQxNyAxNDUuNjY3IDQxN0MxMjYuNTU1IDQxNyAxMTEuMzMzIDQxMi4zMjUgOTkuOTk5NyA0MDIuOTczQzg4LjY2NjggMzkzLjYyMSA4MyAzODEuMTUzIDgzIDM2NS41NjdaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjMyLjI5MSA0MTNWMjUwLjA4MkMyNDQuNjg0IDI1NC42MTQgMjUwLjE0OCAyNTQuNjE0IDI2My4zNzEgMjUwLjA4MlY0MTNIMjMyLjI5MVpNMjQ3LjUgMjM5LjMxM0MyNDEuOTkgMjM5LjMxMyAyMzcuMTQgMjM3LjMxMyAyMzIuOTUyIDIzMy4zMTZDMjI4Ljk4NCAyMjkuMDk1IDIyNyAyMjQuMjA5IDIyNyAyMTguNjU2QzIyNyAyMTIuODgyIDIyOC45ODQgMjA3Ljk5NSAyMzIuOTUyIDIwMy45OTdDMjM3LjE0IDE5OS45OTkgMjQxLjk5IDE5OCAyNDcuNSAxOThDMjUzLjIzMSAxOTggMjU4LjA4IDE5OS45OTkgMjYyLjA0OSAyMDMuOTk3QzI2Ni4wMTYgMjA3Ljk5NSAyNjggMjEyLjg4MiAyNjggMjE4LjY1NkMyNjggMjI0LjIwOSAyNjYuMDE2IDIyOS4wOTUgMjYyLjA0OSAyMzMuMzE2QzI1OC4wOCAyMzcuMzEzIDI1My4yMzEgMjM5LjMxMyAyNDcuNSAyMzkuMzEzWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTMxOS4zMzMgNDEzSDI4OFYyNDkuNjc2SDMxNlYyNzcuMjMzQzMxOS4zMzMgMjY4LjEwNCAzMjUuNzc4IDI2MC4zNjQgMzM0LjY2NyAyNTQuMzUyQzM0My43NzggMjQ4LjExNyAzNTQuNzc4IDI0NSAzNjcuNjY3IDI0NUMzODIuMTExIDI0NSAzOTQuMTEyIDI0OC44OTcgNDAzLjY2NyAyNTYuNjlDNDEzLjIyMiAyNjQuNDg0IDQxOS40NDQgMjc0LjgzNyA0MjIuMzM0IDI4Ny43NTJINDE2LjY2N0M0MTguODg5IDI3NC44MzcgNDI1IDI2NC40ODQgNDM1IDI1Ni42OUM0NDUgMjQ4Ljg5NyA0NTcuMzM0IDI0NSA0NzIgMjQ1QzQ5MC42NjYgMjQ1IDUwNS4zMzQgMjUwLjQ1NSA1MTYgMjYxLjM2NkM1MjYuNjY3IDI3Mi4yNzYgNTMyIDI4Ny4xOTUgNTMyIDMwNi4xMjFWNDEzSDUwMS4zMzNWMzEzLjgwNEM1MDEuMzMzIDMwMC44ODkgNDk4IDI5MC45ODEgNDkxLjMzMyAyODQuMDc4QzQ4NC44ODkgMjc2Ljk1MiA0NzYuMTExIDI3My4zOSA0NjUgMjczLjM5QzQ1Ny4yMjIgMjczLjM5IDQ1MC4zMzMgMjc1LjE3MSA0NDQuMzM0IDI3OC43MzRDNDM4LjU1NiAyODIuMDc0IDQzNCAyODYuOTcyIDQzMC42NjcgMjkzLjQzQzQyNy4zMzMgMjk5Ljg4NyA0MjUuNjY3IDMwNy40NTcgNDI1LjY2NyAzMTYuMTQxVjQxM0gzOTQuNjY3VjMxMy40NjlDMzk0LjY2NyAzMDAuNTU1IDM5MS40NDUgMjkwLjc1OCAzODUgMjg0LjA3OEMzNzguNTU2IDI3Ny4xNzUgMzY5Ljc3OCAyNzMuNzI0IDM1OC42NjcgMjczLjcyNEMzNTAuODg5IDI3My43MjQgMzQ0IDI3NS41MDUgMzM4IDI3OS4wNjhDMzMyLjIyMiAyODIuNDA4IDMyNy42NjcgMjg3LjMwNyAzMjQuMzMzIDI5My43NjNDMzIxIDI5OS45OTggMzE5LjMzMyAzMDcuNDU3IDMxOS4zMzMgMzE2LjE0MVY0MTNaIiBmaWxsPSJ3aGl0ZSIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzExNTlfMzEzIj4KPHJlY3Qgd2lkdGg9IjYxNiIgaGVpZ2h0PSI2MTYiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+&logoColor=white" alt="Sim.ai"></a>
25+
<a href="https://sim.ai" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/Open-sim.ai-3B3B3B?labelColor=1A1A1A" alt="Open sim.ai"></a>
6426

65-
### Self-hosted: NPM Package
27+
### Self-hosted
6628

6729
```bash
6830
npx simstudio
6931
```
70-
http://localhost:3000
7132

72-
#### Note
73-
Docker must be installed and running on your machine.
33+
Open [http://localhost:3000](http://localhost:3000)
34+
35+
Docker must be installed and running. Use `-p, --port <port>` to run Sim on a different port, or `--no-pull` to skip pulling the latest Docker images.
36+
37+
<p align="center">
38+
<img src="apps/sim/public/static/readme-tour.gif" alt="How Sim works — Integrate, Context, Build, Monitor — shown end to end: start a chat to build an agent, connect Slack and other integrations, add a knowledge base, build the workflow visually, deploy it, and monitor runs in the logs" width="100%"/>
39+
</p>
40+
41+
## Capabilities
7442

75-
#### Options
43+
- Connect 1,000+ integrations and every major LLM
44+
- Add Slack, Notion, HubSpot, Salesforce, databases, and more
45+
- Build agents visually, conversationally, or with code
46+
- Ingest files, knowledge bases, and structured table data
47+
- Monitor runs, logs, schedules, and workflow activity
7648

77-
| Flag | Description |
78-
|------|-------------|
79-
| `-p, --port <port>` | Port to run Sim on (default `3000`) |
80-
| `--no-pull` | Skip pulling latest Docker images |
49+
## Self-hosting
8150

82-
### Self-hosted: Docker Compose
51+
### Docker Compose
8352

8453
```bash
8554
git clone https://github.com/simstudioai/sim.git && cd sim
@@ -90,7 +59,7 @@ Open [http://localhost:3000](http://localhost:3000)
9059

9160
Sim also supports local models via [Ollama](https://ollama.ai) and [vLLM](https://docs.vllm.ai/). See the [Docker self-hosting docs](https://docs.sim.ai/self-hosting/docker) for setup details.
9261

93-
### Self-hosted: Manual Setup
62+
### Manual Setup
9463

9564
**Requirements:** [Bun](https://bun.sh/), [Node.js](https://nodejs.org/) v20+, PostgreSQL 12+ with [pgvector](https://github.com/pgvector/pgvector)
9665

@@ -175,4 +144,6 @@ We welcome contributions! Please see our [Contributing Guide](.github/CONTRIBUTI
175144

176145
This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.
177146

178-
<p align="center">Made with ❤️ by the Sim Team</p>
147+
<p align="center">
148+
<img src="apps/sim/public/static/readme-built-by-sim-team.png" alt="Built by the Sim team in San Francisco" width="100%"/>
149+
</p>

0 commit comments

Comments
 (0)