mirror of
https://github.com/simstudioai/sim.git
synced 2026-09-24 15:45:35 +08:00
improvement(docs): restructure sidebar, align chrome, rename Mothership to Chat (#6296)
Sidebar: 11 separator groups become 5, with each module a collapsible folder that auto-opens on the active page. 61 always-visible rows drop to 16. Groups mirror the app's own nav (Chats/Workspace/Workflows) rather than inventing a taxonomy; Enterprise and Self-Hosting are hoisted out of Platform. Chrome: register the `hover-hover` variant, without which every @sim/emcn hover state silently compiled to nothing; restore the sidebar's Geist font stack; add 11 emcn tokens that were falling back to currentColor; adopt the named type scale; align row geometry, hover tokens and group labels with the app. Rename: mothership/ -> chat/ with redirects for the old URLs. Asset paths, the @mothership.sim.ai domain and the `mothership` log-trigger enum value are deliberately left alone -- they are CDN objects, a real domain, and a live product value. Also removes the page-type badge, drops the "Next" heading from the ToC, and lets FAQ rows open independently so expanding one no longer shifts the page.
This commit is contained in:
@@ -10,7 +10,6 @@ import { notFound } from 'next/navigation'
|
||||
import { PageFooter } from '@/components/docs-layout/page-footer'
|
||||
import { PageNavigationArrows } from '@/components/docs-layout/page-navigation-arrows'
|
||||
import { LLMCopyButton } from '@/components/page-actions'
|
||||
import { PageTypeBadge } from '@/components/page-type-badge'
|
||||
import { StructuredData } from '@/components/structured-data'
|
||||
import { CodeBlock } from '@/components/ui/code-block'
|
||||
import { Heading } from '@/components/ui/heading'
|
||||
@@ -23,6 +22,21 @@ import { DOCS_BASE_URL } from '@/lib/urls'
|
||||
const SUPPORTED_LANGUAGES: Set<string> = new Set(i18n.languages)
|
||||
const BASE_URL = DOCS_BASE_URL
|
||||
|
||||
/**
|
||||
* Most pages close with a `## Next` / `## Next steps` grid of onward links.
|
||||
* That heading is navigation, not content, so it is kept out of the table of
|
||||
* contents — the ToC should say what the page covers, not where to go after it.
|
||||
* The heading itself still renders above the cards.
|
||||
*
|
||||
* Matched on the slug rather than the rendered title because a ToC title is a
|
||||
* `ReactNode`; the trailing group tolerates the slugger's dedupe suffix.
|
||||
*/
|
||||
const ONWARD_NAV_SLUG = /^#next(-steps)?(-\d+)?$/i
|
||||
|
||||
function isContentHeading(item: { url: string }): boolean {
|
||||
return !ONWARD_NAV_SLUG.test(item.url)
|
||||
}
|
||||
|
||||
const OG_LOCALE_MAP: Record<string, string> = {
|
||||
en: 'en_US',
|
||||
es: 'es_ES',
|
||||
@@ -171,7 +185,7 @@ export default async function Page(props: { params: Promise<{ slug?: string[]; l
|
||||
breadcrumb={breadcrumbs}
|
||||
/>
|
||||
<DocsPage
|
||||
toc={data.toc}
|
||||
toc={data.toc.filter(isContentHeading)}
|
||||
breadcrumb={{
|
||||
enabled: false,
|
||||
}}
|
||||
@@ -218,7 +232,7 @@ export default async function Page(props: { params: Promise<{ slug?: string[]; l
|
||||
breadcrumb={breadcrumbs}
|
||||
/>
|
||||
<DocsPage
|
||||
toc={data.toc}
|
||||
toc={data.toc.filter(isContentHeading)}
|
||||
full={data.full || isAcademy}
|
||||
breadcrumb={{
|
||||
enabled: false,
|
||||
@@ -244,7 +258,6 @@ export default async function Page(props: { params: Promise<{ slug?: string[]; l
|
||||
</div>
|
||||
<PageNavigationArrows previous={neighbours?.previous} next={neighbours?.next} />
|
||||
</div>
|
||||
{data.pageType && <PageTypeBadge type={data.pageType} className='mb-3' />}
|
||||
<DocsTitle className='mb-2'>{data.title}</DocsTitle>
|
||||
</div>
|
||||
<DocsBody>
|
||||
|
||||
+73
-49
@@ -5,6 +5,19 @@
|
||||
@source "../../../packages/emcn/src";
|
||||
@source "../../../packages/workflow-renderer/src";
|
||||
|
||||
/* Every @sim/emcn component expresses hover through `hover-hover:` so touch
|
||||
devices never latch a sticky hover state. The app registers it as a plugin
|
||||
variant in apps/sim/tailwind.config.ts; docs is CSS-first Tailwind v4 with no
|
||||
config, so without this declaration the variant compiles to nothing and every
|
||||
emcn hover state silently no-ops here. */
|
||||
@custom-variant hover-hover {
|
||||
@media (hover: hover) and (pointer: fine) {
|
||||
&:hover {
|
||||
@slot;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Prevent overscroll bounce effect on the page */
|
||||
html,
|
||||
body {
|
||||
@@ -114,11 +127,24 @@ body {
|
||||
--badge-error-text: #dc2626;
|
||||
--badge-gray-bg: #e7e5e4;
|
||||
--badge-gray-text: #57534e;
|
||||
--code-bg: #f5f5f5;
|
||||
--code-foreground: #1a1a1a;
|
||||
--code-line-number: #737373;
|
||||
--selection-bg: #add6ff;
|
||||
--selection-dark: #264f78;
|
||||
--highlight-search-active: #f6ad55;
|
||||
--scrollbar-thumb-color: #c0c0c0;
|
||||
--scrollbar-thumb-hover-color: #a8a8a8;
|
||||
--shadow-subtle: 0 2px 4px 0 rgba(0, 0, 0, 0.08);
|
||||
--shadow-medium: 0 4px 12px rgba(0, 0, 0, 0.1);
|
||||
--shadow-overlay: 0 10px 30px rgba(0, 0, 0, 0.11);
|
||||
--shadow-card: 0 1px 3px rgba(0, 0, 0, 0.04);
|
||||
/* z-index scale — poppers sit above the modal so menus stay clickable over
|
||||
the modal overlay. Mirrors apps/sim/app/_styles/globals.css. */
|
||||
--z-toast: 150;
|
||||
--z-modal: 200;
|
||||
--z-popover: 300;
|
||||
--z-tooltip: 400;
|
||||
}
|
||||
|
||||
.dark {
|
||||
@@ -185,8 +211,13 @@ body {
|
||||
--badge-error-text: #fca5a5;
|
||||
--badge-gray-bg: #3a3a3a;
|
||||
--badge-gray-text: #a8a8a8;
|
||||
--code-bg: #1f1f1f;
|
||||
--code-foreground: #eeeeee;
|
||||
--code-line-number: #a8a8a8;
|
||||
--selection-bg: #264f78;
|
||||
--scrollbar-thumb-color: #5a5a5a;
|
||||
--scrollbar-thumb-hover-color: #6a6a6a;
|
||||
--shadow-overlay: 0 10px 30px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
/* Scrollbars — platform thumb tokens, transparent track */
|
||||
@@ -358,10 +389,10 @@ aside#nd-sidebar [data-radix-scroll-area-viewport] {
|
||||
}
|
||||
}
|
||||
|
||||
/* Sidebar spacing — left padding aligns item text with navbar content (item has 14px internal padding) */
|
||||
/* Sidebar spacing — left padding aligns item text with navbar content (item has 8px internal padding) */
|
||||
[data-sidebar-viewport],
|
||||
#nd-sidebar > div {
|
||||
padding: 0 14px 0 calc(var(--nav-inset) - 14px) !important;
|
||||
padding: 0 14px 0 calc(var(--nav-inset) - 8px) !important;
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
@@ -386,15 +417,20 @@ html #nd-sidebar [data-radix-scroll-area-viewport] > div {
|
||||
/* Target Link and button elements in sidebar - override Fumadocs itemVariants */
|
||||
/* Exclude the small chevron-only toggle buttons */
|
||||
/* Using html prefix for higher specificity over Tailwind v4 utilities */
|
||||
/* NEVER set `display` here. This selector scores (1,2,2) and carries
|
||||
`!important`, so it out-specifies every rule below that hides the language
|
||||
selector, theme toggle, and search button — a `display` declaration here
|
||||
forces all of them back into the sidebar. The 30px chip height therefore
|
||||
comes from line-height + padding (20 + 5 + 5), not from flex centering. */
|
||||
html #nd-sidebar a:not(:has(span.font-mono)),
|
||||
html #nd-sidebar button:not([aria-label*="ollapse"]):not([aria-label*="xpand"]) {
|
||||
font-size: 0.875rem !important; /* 14px to match navbar items */
|
||||
line-height: 1.4 !important;
|
||||
padding: 0.375rem 0.875rem !important;
|
||||
font-weight: 450 !important;
|
||||
line-height: 20px !important;
|
||||
padding: 5px 0.5rem !important; /* 30px tall overall — the app's chip pill, at its px-2 */
|
||||
font-weight: 400 !important;
|
||||
border-radius: 0.5rem !important; /* platform rounded-lg */
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial,
|
||||
sans-serif !important;
|
||||
font-family: var(--font-geist-sans), ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
|
||||
"Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
|
||||
}
|
||||
|
||||
/* Sidebar text — platform --text-body */
|
||||
@@ -428,28 +464,24 @@ html #nd-sidebar button:not([aria-label*="ollapse"]):not([aria-label*="xpand"])
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
/* Section separator headers — styling handled by component, override fumadocs defaults */
|
||||
/* Section separator headers — match the app sidebar's group label: 12px,
|
||||
sentence case, normal weight. Only the fumadocs defaults are overridden here;
|
||||
size and color stay on the component. */
|
||||
[data-sidebar-viewport] [data-separator] p,
|
||||
#nd-sidebar [data-separator] p {
|
||||
font-size: 0.625rem !important; /* 10px */
|
||||
font-weight: 600 !important;
|
||||
text-transform: uppercase !important;
|
||||
letter-spacing: 0.06em !important;
|
||||
font-weight: 400 !important;
|
||||
text-transform: none !important;
|
||||
letter-spacing: normal !important;
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
/* First separator has no top margin or divider; subsequent ones show the divider on desktop */
|
||||
/* The first group sits flush against the top padding — it has nothing to be
|
||||
separated from. */
|
||||
[data-separator]:not([data-separator] ~ [data-separator]) {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
[data-separator] ~ [data-separator] > .separator-divider {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
/* Active state — aligned with platform --surface-active */
|
||||
#nd-sidebar a[data-active="true"]:not(:has(span.font-mono)),
|
||||
#nd-sidebar button[data-active="true"] {
|
||||
@@ -709,7 +741,7 @@ main article h4,
|
||||
[data-content] h4,
|
||||
#nd-page h3,
|
||||
#nd-page h4 {
|
||||
font-size: 1rem !important;
|
||||
font-size: var(--text-md) !important;
|
||||
font-weight: 470 !important;
|
||||
letter-spacing: -0.01em;
|
||||
color: var(--text-body);
|
||||
@@ -751,18 +783,26 @@ main article li,
|
||||
border-left: none !important;
|
||||
}
|
||||
|
||||
/* The clerk TOC draws its active range twice: a track segment, plus a dot that
|
||||
animates along the track to the current heading. The dot is redundant with the
|
||||
segment and reads as a stray artifact, so hide it and keep the segment. It is
|
||||
the only node fumadocs gives an inline offset-path, which is what anchors it. */
|
||||
#nd-toc [style*="offset-path"] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* TOC heading — align weight with landing */
|
||||
#nd-toc h3,
|
||||
#nd-toc [class*="title"] {
|
||||
font-weight: 480 !important;
|
||||
font-size: 0.8125rem !important;
|
||||
font-size: var(--text-small) !important;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
/* TOC links — softer colors aligned with landing muted text */
|
||||
#nd-toc a {
|
||||
font-weight: 430 !important;
|
||||
font-size: 0.8125rem !important;
|
||||
font-size: var(--text-small) !important;
|
||||
color: var(--text-muted);
|
||||
transition: color 0.2s;
|
||||
}
|
||||
@@ -905,7 +945,7 @@ html #nd-sidebar a:has(span.font-mono.font-medium) {
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 2.625rem;
|
||||
font-size: 0.625rem !important;
|
||||
font-size: var(--text-micro) !important;
|
||||
line-height: 1 !important;
|
||||
padding: 0.15625rem 0.25rem;
|
||||
border-radius: 0.375rem;
|
||||
@@ -917,7 +957,7 @@ html #nd-sidebar a:has(span.font-mono.font-medium) {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 0.625rem !important;
|
||||
font-size: var(--text-micro) !important;
|
||||
line-height: 1 !important;
|
||||
padding: 0.15625rem 0.375rem;
|
||||
border-radius: 0.375rem;
|
||||
@@ -984,7 +1024,7 @@ div.flex.flex-row.items-start.bg-fd-secondary.border.rounded-lg.text-xs {
|
||||
span.font-mono.font-medium {
|
||||
font-family: var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif !important;
|
||||
font-weight: 600 !important;
|
||||
font-size: 0.6875rem !important;
|
||||
font-size: var(--text-xs) !important;
|
||||
letter-spacing: 0.025em;
|
||||
text-transform: uppercase;
|
||||
padding: 0.125rem 0.5rem !important;
|
||||
@@ -1033,7 +1073,7 @@ div.flex.flex-row.items-start.bg-fd-secondary.border.rounded-lg.text-xs {
|
||||
background: none !important;
|
||||
border: none !important;
|
||||
padding: 0 !important;
|
||||
font-size: 0.8125rem !important;
|
||||
font-size: var(--text-small) !important;
|
||||
}
|
||||
/* Inline code in API pages — neutral color aligned with sim design.
|
||||
Exclude code inside the method+path bar (handled above). */
|
||||
@@ -1213,7 +1253,7 @@ div.flex.flex-row.items-start.bg-fd-secondary.border.rounded-lg.text-xs {
|
||||
color: var(--text-secondary);
|
||||
padding: 0.1875rem 0.5rem;
|
||||
border-radius: 0.375rem;
|
||||
font-size: 0.6875rem;
|
||||
font-size: var(--text-xs);
|
||||
line-height: 1.125rem;
|
||||
font-weight: 500;
|
||||
font-family: var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif;
|
||||
@@ -1223,7 +1263,6 @@ html.dark
|
||||
.flex.flex-wrap.items-center.gap-3.not-prose
|
||||
> span.text-sm.font-mono.text-fd-muted-foreground {
|
||||
background-color: var(--surface-4);
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
/* Hide the "*" inside the name span — we'll add "required" as a ::after on the flex row */
|
||||
@@ -1242,7 +1281,7 @@ html.dark
|
||||
color: var(--badge-error-text);
|
||||
padding: 0.1875rem 0.5rem;
|
||||
border-radius: 0.375rem;
|
||||
font-size: 0.6875rem;
|
||||
font-size: var(--text-xs);
|
||||
line-height: 1.125rem;
|
||||
font-weight: 500;
|
||||
font-family: var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif;
|
||||
@@ -1284,7 +1323,7 @@ html.dark
|
||||
> .flex.flex-wrap.items-center.gap-3.not-prose
|
||||
> span.text-sm.font-mono.text-fd-muted-foreground::after {
|
||||
content: "string";
|
||||
font-size: 0.6875rem;
|
||||
font-size: var(--text-xs);
|
||||
line-height: 1.125rem;
|
||||
font-weight: 500;
|
||||
font-family: var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif;
|
||||
@@ -1301,7 +1340,6 @@ html.dark
|
||||
> .flex.flex-wrap.items-center.gap-3.not-prose
|
||||
> span.text-sm.font-mono.text-fd-muted-foreground::after {
|
||||
background-color: var(--surface-4);
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
/* "header" badge via ::before on the auth flex row */
|
||||
@@ -1314,7 +1352,7 @@ html.dark
|
||||
color: var(--text-secondary);
|
||||
padding: 0.1875rem 0.5rem;
|
||||
border-radius: 0.375rem;
|
||||
font-size: 0.6875rem;
|
||||
font-size: var(--text-xs);
|
||||
line-height: 1.125rem;
|
||||
font-weight: 500;
|
||||
font-family: var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif;
|
||||
@@ -1324,7 +1362,6 @@ html.dark
|
||||
div.my-4
|
||||
> .flex.flex-wrap.items-center.gap-3.not-prose::before {
|
||||
background-color: var(--surface-4);
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
/* "required" badge via ::after on the auth flex row — red pill */
|
||||
@@ -1337,7 +1374,7 @@ html.dark
|
||||
color: var(--badge-error-text);
|
||||
padding: 0.1875rem 0.5rem;
|
||||
border-radius: 0.375rem;
|
||||
font-size: 0.6875rem;
|
||||
font-size: var(--text-xs);
|
||||
line-height: 1.125rem;
|
||||
font-weight: 500;
|
||||
font-family: var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif;
|
||||
@@ -1389,7 +1426,7 @@ html.dark
|
||||
color: var(--text-secondary);
|
||||
padding: 0.1875rem 0.5rem;
|
||||
border-radius: 0.375rem;
|
||||
font-size: 0.6875rem;
|
||||
font-size: var(--text-xs);
|
||||
line-height: 1.125rem;
|
||||
font-weight: 500;
|
||||
font-family: var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif;
|
||||
@@ -1400,7 +1437,6 @@ html.dark
|
||||
.flex.flex-wrap.items-center.gap-3.not-prose
|
||||
> span:has(> button) {
|
||||
background-color: var(--surface-4);
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
/* Section headings (Authorization, Path Parameters, etc.) — consistent top spacing */
|
||||
@@ -1562,10 +1598,6 @@ div > figure.shiki {
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
html.dark div > figure.shiki {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
||||
/* Tabbed code block container (cURL/JS/Go tabs) */
|
||||
div:has(> [role="tablist"]):has(> div > figure.shiki) {
|
||||
border-radius: 0.5rem !important;
|
||||
@@ -1610,19 +1642,11 @@ figure.shiki pre {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
||||
html.dark figure.shiki pre {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
||||
/* Code viewport scroll area — transparent bg */
|
||||
figure.shiki > div[role="region"] {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
||||
html.dark figure.shiki > div[role="region"] {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
||||
/* Copy button — minimal ghost style */
|
||||
figure.shiki button[aria-label="Copy Text"],
|
||||
figure.shiki button[aria-label="Copied Text"] {
|
||||
@@ -1690,7 +1714,7 @@ figure.shiki > div:has(> button[aria-label]) {
|
||||
.grid > a[data-card] p,
|
||||
.grid > a[data-card] div {
|
||||
color: var(--text-muted) !important;
|
||||
font-size: 0.8125rem !important;
|
||||
font-size: var(--text-small) !important;
|
||||
}
|
||||
|
||||
/* Steps — lighter styling aligned with platform */
|
||||
|
||||
@@ -12,81 +12,40 @@ interface PageFooterProps {
|
||||
next?: PageNeighbour
|
||||
}
|
||||
|
||||
const SOCIAL_LINKS = [
|
||||
{
|
||||
href: 'https://x.com/simdotai',
|
||||
label: 'X (Twitter)',
|
||||
icon: 'M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z',
|
||||
},
|
||||
{
|
||||
href: 'https://github.com/simstudioai/sim',
|
||||
label: 'GitHub',
|
||||
icon: 'M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z',
|
||||
},
|
||||
{
|
||||
href: 'https://join.slack.com/t/sim-ott9864/shared_invite/zt-43lp8tc5v-0qrrqHGBKUsvQlpoouH~TA',
|
||||
label: 'Slack',
|
||||
icon: 'M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z',
|
||||
},
|
||||
] as const
|
||||
|
||||
/**
|
||||
* Sequential page navigation. The destination name carries the meaning, so each
|
||||
* card shows it alone with a direction chevron — the chevron already says which
|
||||
* way you are going, and a "Previous"/"Next" label above the name only repeated
|
||||
* that. Social links live in the site footer directly below this.
|
||||
*/
|
||||
export function PageFooter({ previous, next }: PageFooterProps) {
|
||||
if (!previous && !next) return null
|
||||
|
||||
return (
|
||||
<div className='mt-12'>
|
||||
<div className='h-px w-full bg-[var(--border)]' />
|
||||
|
||||
{(previous || next) && (
|
||||
<div className='flex gap-2 py-3'>
|
||||
{previous ? (
|
||||
<Link
|
||||
href={previous.url}
|
||||
className='group flex flex-1 flex-col gap-1 rounded-lg px-3 py-3 transition-colors hover:bg-[var(--surface-3)]'
|
||||
>
|
||||
<span className='text-[var(--text-muted)] text-xs'>Previous</span>
|
||||
<span className='flex items-center gap-1.5 text-[var(--text-body)] text-sm transition-colors group-hover:text-[var(--text-primary)]'>
|
||||
<ChevronLeft className='size-3.5 shrink-0' />
|
||||
{previous.name}
|
||||
</span>
|
||||
</Link>
|
||||
) : (
|
||||
<div className='flex-1' />
|
||||
)}
|
||||
|
||||
{next ? (
|
||||
<Link
|
||||
href={next.url}
|
||||
className='group flex flex-1 flex-col items-end gap-1 rounded-lg px-3 py-3 transition-colors hover:bg-[var(--surface-3)]'
|
||||
>
|
||||
<span className='text-[var(--text-muted)] text-xs'>Next</span>
|
||||
<span className='flex items-center gap-1.5 text-[var(--text-body)] text-sm transition-colors group-hover:text-[var(--text-primary)]'>
|
||||
{next.name}
|
||||
<ChevronRight className='size-3.5 shrink-0' />
|
||||
</span>
|
||||
</Link>
|
||||
) : (
|
||||
<div className='flex-1' />
|
||||
)}
|
||||
</div>
|
||||
<div className='mt-12 flex gap-2 py-3'>
|
||||
{previous ? (
|
||||
<Link
|
||||
href={previous.url}
|
||||
className='flex flex-1 items-center gap-1.5 rounded-lg px-3 py-3 text-[var(--text-body)] text-sm transition-colors hover:bg-[var(--surface-active)]'
|
||||
>
|
||||
<ChevronLeft className='size-[14px] shrink-0 text-[var(--text-icon)]' />
|
||||
{previous.name}
|
||||
</Link>
|
||||
) : (
|
||||
<div className='flex-1' />
|
||||
)}
|
||||
|
||||
<div className='flex items-center gap-4 pt-4 pb-6'>
|
||||
{SOCIAL_LINKS.map((link) => (
|
||||
<Link
|
||||
key={link.label}
|
||||
href={link.href}
|
||||
target='_blank'
|
||||
rel='noopener noreferrer'
|
||||
aria-label={link.label}
|
||||
>
|
||||
<svg
|
||||
viewBox='0 0 24 24'
|
||||
className='size-[16px] fill-[var(--text-muted)] transition-colors hover:fill-[var(--text-icon)]'
|
||||
>
|
||||
<path d={link.icon} />
|
||||
</svg>
|
||||
</Link>
|
||||
))}
|
||||
</div>
|
||||
{next ? (
|
||||
<Link
|
||||
href={next.url}
|
||||
className='flex flex-1 items-center justify-end gap-1.5 rounded-lg px-3 py-3 text-[var(--text-body)] text-sm transition-colors hover:bg-[var(--surface-active)]'
|
||||
>
|
||||
{next.name}
|
||||
<ChevronRight className='size-[14px] shrink-0 text-[var(--text-icon)]' />
|
||||
</Link>
|
||||
) : (
|
||||
<div className='flex-1' />
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -40,18 +40,29 @@ function isActive(url: string, pathname: string, nested = true): boolean {
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Rows mirror the app sidebar's chip pill: 30px tall, `rounded-lg`, `px-2`, 14px
|
||||
* at normal weight, `--text-body` at rest AND when active — only the background
|
||||
* moves, to `--surface-active`, then `--surface-6` when an active row is hovered.
|
||||
*
|
||||
* Height, horizontal padding, weight and color are additionally pinned in
|
||||
* `global.css` (`html #nd-sidebar a…`), which needs `!important` to beat
|
||||
* fumadocs' own sidebar rules and therefore also beats these utilities. Keep the
|
||||
* two in step: the classes here describe the intent and drive the mobile layout,
|
||||
* the stylesheet is what actually lands on desktop.
|
||||
*/
|
||||
const ITEM_BASE =
|
||||
'flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-[var(--text-muted)] text-sm transition-colors hover:bg-[var(--surface-active)] hover:text-[var(--text-body)]'
|
||||
const ITEM_ACTIVE_MOBILE = 'bg-[var(--surface-active)] font-medium text-[var(--text-primary)]'
|
||||
'flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-[var(--text-body)] text-sm transition-colors hover:bg-[var(--surface-active)]'
|
||||
const ITEM_ACTIVE_MOBILE = 'bg-[var(--surface-active)]'
|
||||
|
||||
const ITEM_DESKTOP =
|
||||
'lg:mb-[0.0625rem] lg:block lg:rounded-lg lg:px-2 lg:py-1.5 lg:font-normal lg:text-sm lg:leading-tight'
|
||||
'lg:mb-[0.0625rem] lg:block lg:rounded-lg lg:px-2 lg:font-normal lg:text-sm lg:leading-tight'
|
||||
const ITEM_TEXT = 'lg:text-[var(--text-body)]'
|
||||
const ITEM_HOVER = 'lg:hover:bg-[var(--surface-active)]'
|
||||
const ITEM_ACTIVE =
|
||||
'lg:bg-[var(--surface-active)] lg:font-normal lg:text-[var(--text-body)] lg:hover:bg-[var(--surface-6)]'
|
||||
|
||||
const FOLDER_TEXT = 'lg:text-[var(--text-body)] lg:font-medium'
|
||||
const FOLDER_TEXT = 'lg:text-[var(--text-body)] lg:font-normal'
|
||||
const FOLDER_HOVER = 'lg:hover:bg-[var(--surface-active)]'
|
||||
const FOLDER_ACTIVE =
|
||||
'lg:bg-[var(--surface-active)] lg:text-[var(--text-body)] lg:hover:bg-[var(--surface-6)]'
|
||||
@@ -133,9 +144,9 @@ export function SidebarFolder({ item, children }: { item: Folder; children: Reac
|
||||
data-active={active}
|
||||
className={cn(
|
||||
'flex flex-1 items-center gap-2 rounded-md px-2 py-1.5 text-sm transition-colors',
|
||||
'text-[var(--text-muted)] hover:bg-[var(--surface-active)] hover:text-[var(--text-body)]',
|
||||
'text-[var(--text-body)] hover:bg-[var(--surface-active)]',
|
||||
active && ITEM_ACTIVE_MOBILE,
|
||||
'lg:block lg:flex-1 lg:rounded-lg lg:px-2 lg:py-1.5 lg:text-sm lg:leading-tight',
|
||||
'lg:block lg:flex-1 lg:rounded-lg lg:px-2 lg:text-sm lg:leading-tight',
|
||||
FOLDER_TEXT,
|
||||
!active && FOLDER_HOVER,
|
||||
active && FOLDER_ACTIVE
|
||||
@@ -161,8 +172,8 @@ export function SidebarFolder({ item, children }: { item: Folder; children: Reac
|
||||
onClick={toggleOpen}
|
||||
className={cn(
|
||||
'flex flex-1 items-center gap-2 rounded-md px-2 py-1.5 text-sm transition-colors',
|
||||
'text-[var(--text-muted)] hover:bg-[var(--surface-active)]',
|
||||
'lg:flex lg:w-full lg:cursor-pointer lg:items-center lg:justify-between lg:rounded-lg lg:px-2 lg:py-1.5 lg:text-left lg:text-sm lg:leading-tight',
|
||||
'text-[var(--text-body)] hover:bg-[var(--surface-active)]',
|
||||
'lg:flex lg:w-full lg:cursor-pointer lg:items-center lg:justify-between lg:rounded-lg lg:px-2 lg:text-left lg:text-sm lg:leading-tight',
|
||||
FOLDER_TEXT,
|
||||
FOLDER_HOVER
|
||||
)}
|
||||
@@ -181,9 +192,7 @@ export function SidebarFolder({ item, children }: { item: Folder; children: Reac
|
||||
>
|
||||
<div className='overflow-hidden'>
|
||||
<div className='ml-4 flex flex-col gap-0.5 lg:hidden'>{children}</div>
|
||||
<ul className='mt-0.5 ml-2 hidden space-y-[0.0625rem] border-[var(--surface-active)] border-l pl-2.5 lg:block'>
|
||||
{children}
|
||||
</ul>
|
||||
<ul className='mt-0.5 ml-2 hidden space-y-[0.0625rem] pl-2.5 lg:block'>{children}</ul>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
@@ -191,25 +200,16 @@ export function SidebarFolder({ item, children }: { item: Folder; children: Reac
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Group label. Mirrors the app sidebar's section header: a 12px `--text-muted`
|
||||
* row at normal weight in sentence case, with the group's 16px top gap carried
|
||||
* by the label itself (the app's `SIDEBAR_SECTION_GAP_CLASS`). Groups are told
|
||||
* apart by that gap alone — the app draws no rule between them.
|
||||
*/
|
||||
export function SidebarSeparator({ item }: { item: Separator }) {
|
||||
return (
|
||||
<div
|
||||
data-separator
|
||||
className={cn('mt-5 mb-1.5 px-2', 'lg:relative lg:mt-0 lg:mb-1.5 lg:px-[13px] lg:pt-0')}
|
||||
>
|
||||
<div className='separator-divider hidden'>
|
||||
<div className='h-[20px]' />
|
||||
<div className='h-px bg-[var(--surface-active)]' />
|
||||
<div className='h-[20px]' />
|
||||
</div>
|
||||
<p
|
||||
className={cn(
|
||||
'font-medium text-[var(--text-muted)] text-xs',
|
||||
'lg:font-semibold lg:text-[var(--text-muted)] lg:text-micro lg:uppercase lg:tracking-[0.06em]'
|
||||
)}
|
||||
>
|
||||
{item.name}
|
||||
</p>
|
||||
<div data-separator className='mt-4 mb-1.5 px-2'>
|
||||
<p className='text-[var(--text-muted)] text-caption'>{item.name}</p>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ interface FooterItem {
|
||||
|
||||
const PRODUCT_LINKS: FooterItem[] = [
|
||||
{ label: 'Enterprise', href: `${SIM_SITE_URL}/enterprise`, external: true },
|
||||
{ label: 'Mothership', href: '/mothership' },
|
||||
{ label: 'Chat', href: '/chat' },
|
||||
{ label: 'Workflows', href: '/introduction' },
|
||||
{ label: 'Knowledge Base', href: '/knowledgebase' },
|
||||
{ label: 'Tables', href: '/tables' },
|
||||
|
||||
@@ -75,7 +75,7 @@ export function Navbar() {
|
||||
aria-current={isActive ? 'page' : undefined}
|
||||
{...(tab.external ? { target: '_blank', rel: 'noopener noreferrer' } : {})}
|
||||
className={cn(
|
||||
'-mb-px relative flex items-center border-b text-[14px] tracking-[-0.01em] transition-colors',
|
||||
'-mb-px relative flex items-center border-b text-sm tracking-[-0.01em] transition-colors',
|
||||
isActive
|
||||
? 'border-[var(--text-muted)] font-medium text-[var(--text-primary)]'
|
||||
: 'border-transparent font-normal text-[var(--text-muted)] hover:border-[var(--border-1)] hover:text-[var(--text-secondary)]'
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
import type { DocsPageType } from '@/lib/source'
|
||||
import { cn } from '@/lib/utils'
|
||||
|
||||
/**
|
||||
* Status-color mapping mirrored from the emcn `Badge` variants
|
||||
* (`apps/sim/components/emcn/components/badge/badge.tsx`) — `green`, `blue`,
|
||||
* `purple`, and `amber` over the shared `--badge-*` tokens.
|
||||
*/
|
||||
const CONFIG = {
|
||||
tutorial: {
|
||||
label: 'Tutorial',
|
||||
className: 'bg-[var(--badge-success-bg)] text-[var(--badge-success-text)]',
|
||||
},
|
||||
guide: {
|
||||
label: 'Guide',
|
||||
className: 'bg-[var(--badge-blue-bg)] text-[var(--badge-blue-text)]',
|
||||
},
|
||||
reference: {
|
||||
label: 'Reference',
|
||||
className: 'bg-[var(--badge-purple-bg)] text-[var(--badge-purple-text)]',
|
||||
},
|
||||
concept: {
|
||||
label: 'Concept',
|
||||
className: 'bg-[var(--badge-amber-bg)] text-[var(--badge-amber-text)]',
|
||||
},
|
||||
} as const satisfies Record<DocsPageType, { label: string; className: string }>
|
||||
|
||||
interface PageTypeBadgeProps {
|
||||
type: DocsPageType
|
||||
className?: string
|
||||
}
|
||||
|
||||
/**
|
||||
* Small label that tells the reader which Diátaxis mode a page is — learning,
|
||||
* task, lookup, or understanding. Rendered only when a page declares `type`.
|
||||
* Chrome matches the emcn `Badge` status variants (md size).
|
||||
*/
|
||||
export function PageTypeBadge({ type, className }: PageTypeBadgeProps) {
|
||||
const config = CONFIG[type]
|
||||
if (!config) return null
|
||||
|
||||
return (
|
||||
<span
|
||||
className={cn(
|
||||
'inline-flex items-center gap-1.5 rounded-md px-[9px] py-0.5 font-medium font-season text-caption transition-colors',
|
||||
config.className,
|
||||
className
|
||||
)}
|
||||
>
|
||||
{config.label}
|
||||
</span>
|
||||
)
|
||||
}
|
||||
@@ -30,7 +30,7 @@ function FAQItemRow({
|
||||
type='button'
|
||||
onClick={onToggle}
|
||||
aria-expanded={isOpen}
|
||||
className='flex w-full cursor-pointer items-center gap-3 px-4 py-2.5 text-left font-medium text-[0.875rem] text-[var(--text-body)] transition-colors hover:bg-[var(--surface-3)]'
|
||||
className='flex w-full cursor-pointer items-center gap-3 px-4 py-2.5 text-left font-medium text-[var(--text-body)] text-sm transition-colors hover:bg-[var(--surface-active)]'
|
||||
>
|
||||
<ChevronRight
|
||||
className={cn(
|
||||
@@ -48,7 +48,7 @@ function FAQItemRow({
|
||||
}}
|
||||
>
|
||||
<div className='overflow-hidden'>
|
||||
<div className='px-4 pt-2 pb-2.5 pl-11 text-[0.875rem] text-[var(--text-secondary)] leading-relaxed'>
|
||||
<div className='px-4 pt-2 pb-2.5 pl-11 text-[var(--text-secondary)] text-sm leading-relaxed'>
|
||||
{item.answer}
|
||||
</div>
|
||||
</div>
|
||||
@@ -58,7 +58,21 @@ function FAQItemRow({
|
||||
}
|
||||
|
||||
export function FAQ({ items, title = 'Common Questions' }: FAQProps) {
|
||||
const [openIndex, setOpenIndex] = useState<number | null>(null)
|
||||
/**
|
||||
* Rows open independently rather than as a single-open accordion. Auto-closing
|
||||
* a sibling collapses content *above* the row being opened, which yanks that
|
||||
* row out from under the pointer — and since the FAQ is the last block on the
|
||||
* page, the shrinking document also clamps the scroll position and lurches the
|
||||
* whole viewport. Opening a row now only ever pushes content below it down.
|
||||
*/
|
||||
const [openIndices, setOpenIndices] = useState<ReadonlySet<number>>(() => new Set())
|
||||
|
||||
const toggle = (index: number) =>
|
||||
setOpenIndices((previous) => {
|
||||
const next = new Set(previous)
|
||||
if (!next.delete(index)) next.add(index)
|
||||
return next
|
||||
})
|
||||
|
||||
const faqSchema = {
|
||||
'@context': 'https://schema.org',
|
||||
@@ -88,8 +102,8 @@ export function FAQ({ items, title = 'Common Questions' }: FAQProps) {
|
||||
>
|
||||
<FAQItemRow
|
||||
item={item}
|
||||
isOpen={openIndex === index}
|
||||
onToggle={() => setOpenIndex(openIndex === index ? null : index)}
|
||||
isOpen={openIndices.has(index)}
|
||||
onToggle={() => toggle(index)}
|
||||
/>
|
||||
</div>
|
||||
))}
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
'use client'
|
||||
|
||||
import { useId } from 'react'
|
||||
import { cn } from '@/lib/utils'
|
||||
|
||||
interface SimLogoProps {
|
||||
@@ -32,107 +29,3 @@ export function SimWordmark({ className }: SimLogoProps) {
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Icon-only Sim mark, no wordmark text. Same brandbook icon geometry as
|
||||
* {@link SimLogoFull}'s icon, at its native square viewBox.
|
||||
*/
|
||||
export function SimLogoIcon({ className }: SimLogoProps) {
|
||||
const gradientId = `sim-logo-icon-gradient-${useId()}`
|
||||
|
||||
return (
|
||||
<svg
|
||||
viewBox='0 0 222 222'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
className={cn('size-7', className)}
|
||||
aria-label='Sim'
|
||||
>
|
||||
<defs>
|
||||
<linearGradient
|
||||
id={gradientId}
|
||||
gradientUnits='userSpaceOnUse'
|
||||
x1='129.434'
|
||||
y1='129.266'
|
||||
x2='185.629'
|
||||
y2='185.33'
|
||||
>
|
||||
<stop offset='0' />
|
||||
<stop offset='1' stopOpacity='0' />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<path
|
||||
clipRule='evenodd'
|
||||
d='m107.822 93.7612c0 3.5869-1.419 7.0308-3.938 9.5668l-.361.364c-2.517 2.544-5.9375 3.966-9.4994 3.966h-80.5781c-7.42094 0-13.4455 6.06-13.4455 13.533v87.141c0 7.474 6.02456 13.534 13.4455 13.534h86.5167c7.4208 0 13.4378-6.06 13.4378-13.534v-81.587c0-3.326 1.31-6.517 3.647-8.871 2.33-2.347 5.499-3.667 8.802-3.667h81.928c7.421 0 13.437-6.059 13.437-13.533v-87.1407c0-7.47374-6.016-13.5333-13.437-13.5333h-86.517c-7.421 0-13.438 6.05956-13.438 13.5333zm26.256-75.2112h60.874c4.337 0 7.844 3.5393 7.844 7.9003v61.3071c0 4.3604-3.507 7.9003-7.844 7.9003h-60.874c-4.33 0-7.845-3.5399-7.845-7.9003v-61.3071c0-4.361 3.515-7.9003 7.845-7.9003z'
|
||||
fill='#33C482'
|
||||
fillRule='evenodd'
|
||||
/>
|
||||
<path
|
||||
d='m207.878 129.57h-64.324c-7.798 0-14.12 6.367-14.12 14.221v63.993c0 7.854 6.322 14.221 14.12 14.221h64.324c7.799 0 14.121-6.367 14.121-14.221v-63.993c0-7.854-6.322-14.221-14.121-14.221z'
|
||||
fill='#33C482'
|
||||
/>
|
||||
<path
|
||||
d='m207.878 129.266h-64.324c-7.798 0-14.12 6.366-14.12 14.221v63.992c0 7.854 6.322 14.22 14.12 14.22h64.324c7.799 0 14.121-6.366 14.121-14.22v-63.992c0-7.855-6.322-14.221-14.121-14.221z'
|
||||
fill={`url(#${gradientId})`}
|
||||
fillOpacity='0.2'
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Full Sim logo with icon and "Sim" text.
|
||||
* Uses the same SVG source as the landing page navbar for exact visual alignment.
|
||||
* The icon stays green (#33C482), text adapts to light/dark mode.
|
||||
*/
|
||||
export function SimLogoFull({ className }: SimLogoProps) {
|
||||
const gradientId = `sim-logo-full-gradient-${useId()}`
|
||||
|
||||
return (
|
||||
<svg
|
||||
viewBox='0 0 71 22'
|
||||
fill='none'
|
||||
xmlns='http://www.w3.org/2000/svg'
|
||||
className={cn('h-7 w-auto', className)}
|
||||
aria-label='Sim'
|
||||
>
|
||||
<defs>
|
||||
<linearGradient
|
||||
id={gradientId}
|
||||
gradientUnits='userSpaceOnUse'
|
||||
x1='171.406'
|
||||
y1='171.18'
|
||||
x2='245.831'
|
||||
y2='245.428'
|
||||
>
|
||||
<stop offset='0' />
|
||||
<stop offset='1' stopOpacity='0' />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
{/* Green icon — scaled to match landing logo proportions */}
|
||||
<g transform='scale(.07483)'>
|
||||
<path
|
||||
clipRule='evenodd'
|
||||
d='m142.79 124.17c0 4.75-1.88 9.31-5.22 12.67l-.48.48c-3.33 3.37-7.86 5.25-12.58 5.25h-106.71c-9.83 0-17.81 8.03-17.81 17.92v115.41c0 9.9 7.98 17.92 17.81 17.92h114.58c9.83 0 17.8-8.03 17.8-17.92v-108.05c0-4.41 1.74-8.63 4.83-11.75 3.09-3.11 7.28-4.86 11.66-4.86h108.5c9.83 0 17.8-8.02 17.8-17.92v-115.41c0-9.9-7.97-17.92-17.8-17.92h-114.58c-9.83 0-17.8 8.03-17.8 17.92zm34.77-99.61h80.62c5.74 0 10.39 4.69 10.39 10.46v81.19c0 5.77-4.64 10.46-10.39 10.46h-80.62c-5.73 0-10.39-4.69-10.39-10.46v-81.19c0-5.78 4.66-10.46 10.39-10.46z'
|
||||
fill='#33C482'
|
||||
fillRule='evenodd'
|
||||
/>
|
||||
<path
|
||||
d='m275.293 171.578h-85.187c-10.327 0-18.7 8.432-18.7 18.834v84.75c0 10.402 8.373 18.834 18.7 18.834h85.187c10.328 0 18.701-8.432 18.701-18.834v-84.75c0-10.402-8.373-18.834-18.701-18.834z'
|
||||
fill='#33C482'
|
||||
/>
|
||||
<path
|
||||
d='m275.293 171.18h-85.187c-10.327 0-18.7 8.432-18.7 18.834v84.749c0 10.402 8.373 18.833 18.7 18.833h85.187c10.328 0 18.701-8.431 18.701-18.833v-84.749c0-10.402-8.373-18.834-18.701-18.834z'
|
||||
fill={`url(#${gradientId})`}
|
||||
fillOpacity='0.2'
|
||||
/>
|
||||
</g>
|
||||
{/* "Sim" text — adapts to light/dark mode */}
|
||||
<g className='fill-[var(--text-primary)]'>
|
||||
<path d='M31.57 15.85h2.59c0 .71.26 1.28.78 1.71.52.41 1.22.61 2.1.61.96 0 1.7-.18 2.21-.55.52-.39.78-.9.78-1.53 0-.46-.14-.85-.43-1.16-.27-.31-.77-.56-1.49-.75l-2.47-.58c-1.25-.31-2.17-.78-2.79-1.42-.59-.64-.89-1.48-.89-2.52 0-.87.22-1.62.66-2.26.46-.64 1.08-1.13 1.87-1.48.8-.35 1.72-.52 2.76-.52s1.93.18 2.67.55c.77.37 1.36.88 1.78 1.53.44.66.67 1.44.69 2.35h-2.59c-.02-.73-.26-1.3-.72-1.71-.46-.41-1.1-.61-1.93-.61-.84 0-1.49.18-1.95.55-.46.37-.69.87-.69 1.51 0 .95.69 1.59 2.07 1.94l2.47.61c1.19.27 2.08.71 2.67 1.33.59.6.89 1.42.89 2.46 0 .89-.24 1.67-.72 2.35-.48.66-1.14 1.17-1.98 1.53-.82.35-1.8.52-2.93.52-1.65 0-2.96-.41-3.94-1.22-.98-.81-1.47-1.89-1.47-3.24z' />
|
||||
<path d='M44.51 19.96v-14.16c1.08.39 1.55.39 2.7 0v14.16zm1.32-15.09c-.48 0-.9-.17-1.26-.52-.34-.37-.52-.79-.52-1.27 0-.5.17-.93.52-1.27.36-.35.79-.52 1.26-.52.5 0 .92.17 1.26.52s.52.77.52 1.27c0 .48-.17.91-.52 1.27-.34.35-.77.52-1.26.52z' />
|
||||
<path d='M51.98 19.96h-2.7v-14.16h2.41v2.39c.29-.79.84-1.46 1.61-1.98.79-.54 1.73-.81 2.85-.81 1.25 0 2.28.34 3.1 1.01.82.68 1.36 1.57 1.61 2.69h-.49c.19-1.12.72-2.02 1.58-2.69.86-.68 1.93-1.01 3.19-1.01 1.61 0 2.87.47 3.79 1.42.92.95 1.38 2.24 1.38 3.88v9.26h-2.64v-8.6c0-1.12-.29-1.98-.86-2.58-.56-.62-1.31-.93-2.27-.93-.67 0-1.26.15-1.78.46-.5.29-.89.71-1.18 1.27-.29.56-.43 1.22-.43 1.97v8.4h-2.67v-8.63c0-1.12-.28-1.97-.83-2.55-.56-.6-1.31-.9-2.27-.9-.67 0-1.26.15-1.78.46-.5.29-.89.71-1.18 1.27-.29.54-.43 1.19-.43 1.94z' />
|
||||
</g>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ interface VideoProps {
|
||||
|
||||
export function Video({
|
||||
src,
|
||||
className = 'w-full rounded-xl border border-[var(--border)] overflow-hidden outline-none focus:outline-none',
|
||||
className = 'w-full',
|
||||
autoPlay = true,
|
||||
loop = true,
|
||||
muted = true,
|
||||
@@ -70,8 +70,9 @@ export function Video({
|
||||
width={width}
|
||||
height={height}
|
||||
className={cn(
|
||||
className,
|
||||
enableLightbox && 'cursor-pointer transition-opacity group-hover:opacity-[0.97]'
|
||||
'overflow-hidden rounded-xl border border-[var(--border)] outline-none focus:outline-none',
|
||||
enableLightbox && 'cursor-pointer transition-opacity group-hover:opacity-[0.97]',
|
||||
className
|
||||
)}
|
||||
src={isInView ? getAssetUrl(src) : undefined}
|
||||
/>
|
||||
|
||||
@@ -33,7 +33,7 @@ You can build a whole workflow without dragging a single block. Describe the sys
|
||||
},
|
||||
{
|
||||
title: 'Deploy from the conversation',
|
||||
body: "One more message and the workflow is live behind an endpoint, from blank canvas to working system without leaving the chat.",
|
||||
body: "One more message and the workflow is live behind an endpoint, from blank canvas to working system without leaving Chat.",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
@@ -58,9 +58,9 @@ You can build a whole workflow without dragging a single block. Describe the sys
|
||||
|
||||
## From description to blocks
|
||||
|
||||
The chat turns your description into real structure: a parallel container drafting candidate posts, generation blocks for the image, the deck, and the voiceover, an evaluator scoring the results, and a table keeping every score. Nothing about the result is special, it's a normal workflow you could have built by hand, which means you can open it, read it, and change it.
|
||||
Sim turns your description into real structure: a parallel container drafting candidate posts, generation blocks for the image, the deck, and the voiceover, an evaluator scoring the results, and a table keeping every score. Nothing about the result is special, it's a normal workflow you could have built by hand, which means you can open it, read it, and change it.
|
||||
|
||||
Here is the shape of the workflow the chat builds in the video, candidates drafted in parallel, an evaluator scoring them, and the scores kept in a table:
|
||||
Here is the shape of the workflow Sim builds in the video, candidates drafted in parallel, an evaluator scoring them, and the scores kept in a table:
|
||||
|
||||
<WorkflowPreview workflow={AV_CONTENT_AGENT_WORKFLOW} />
|
||||
|
||||
@@ -77,13 +77,13 @@ The run record shows every step with its timing and output: the draft, the image
|
||||
Deploying is one more message in the conversation. The workflow deploys behind a live endpoint, ready for whatever you send it, and it remains a workflow in your workspace: inspectable, schedulable, and callable from everything else you build.
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "Can I really build a workflow without touching the canvas?", answer: "Yes. Describe the system you want and the chat lays out the blocks, wires the connections, and fills the parameters. The result is a normal Sim workflow you can open and edit by hand afterwards." },
|
||||
{ question: "Can I really build a workflow without touching the canvas?", answer: "Yes. Describe the system you want and Sim lays out the blocks, wires the connections, and fills the parameters. The result is a normal Sim workflow you can open and edit by hand afterwards." },
|
||||
{ question: "How do I know the generated workflow works?", answer: "Sim runs it immediately and shows you the run record: every step, its timing, and its output. In the video, a failing image step is caught and fixed automatically before you ever test it." },
|
||||
{ question: "Can I edit a chat-built workflow manually?", answer: "Yes. Nothing about it is special: it is blocks and connections on the canvas, so you can adjust a prompt, swap a model, or add steps like on any workflow you built yourself." },
|
||||
{ question: "How does deployment from chat work?", answer: "One message deploys the workflow behind a live API endpoint. It stays a workspace workflow, so it is inspectable, schedulable, and callable from other workflows." },
|
||||
{ question: "Can I edit a workflow Sim built manually?", answer: "Yes. Nothing about it is special: it is blocks and connections on the canvas, so you can adjust a prompt, swap a model, or add steps like on any workflow you built yourself." },
|
||||
{ question: "How does deployment from Chat work?", answer: "One message deploys the workflow behind a live API endpoint. It stays a workspace workflow, so it is inspectable, schedulable, and callable from other workflows." },
|
||||
]} />
|
||||
|
||||
## Related documentation
|
||||
|
||||
- [Building workflows from chat](/mothership/workflows)
|
||||
- [Building workflows from Chat](/chat/workflows)
|
||||
- [Deployment](/workflows/deployment)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Chat
|
||||
description: "The chat in Sim is your workspace control plane: one conversation that queries your tables, searches your docs, runs and schedules workflows, researches the outside world, and composes it all into new systems."
|
||||
description: "Chat is your AI command center: one conversation that queries your tables, searches your docs, runs and schedules workflows, researches the outside world, and composes it all into new systems."
|
||||
---
|
||||
|
||||
import { VideoPlaceholder } from '@/components/ui/video-placeholder'
|
||||
@@ -15,7 +15,7 @@ import { AV_SUPPORT_DESK_WORKFLOW } from '@/components/workflow-preview/academy-
|
||||
<div className="mt-8 grid grid-cols-1 items-start gap-10 lg:grid-cols-[1fr_300px]">
|
||||
<div>
|
||||
|
||||
The chat lives inside your workspace, and everything in it, your workflows, tables, knowledge bases, and files, is within its reach. You ask from one place, and Sim works across all of it: answering from your data, operating your workflows, and shaping new systems around the task.
|
||||
Chat lives inside your workspace, and everything in it, your workflows, tables, knowledge bases, and files, is within its reach. You ask from one place, and Sim works across all of it: answering from your data, operating your workflows, and shaping new systems around the task.
|
||||
|
||||
<WhatYouWillLearn
|
||||
items={[
|
||||
@@ -25,7 +25,7 @@ The chat lives inside your workspace, and everything in it, your workflows, tabl
|
||||
},
|
||||
{
|
||||
title: 'It runs your workflows',
|
||||
body: 'The chat runs workflows and puts them on schedules for you, no clicks, no setup. Actions land as toasts, and each resource it touches opens as a tab.',
|
||||
body: 'Chat runs workflows and puts them on schedules for you, no clicks, no setup. Actions land as toasts, and each resource it touches opens as a tab.',
|
||||
},
|
||||
{
|
||||
title: 'It reaches outside',
|
||||
@@ -56,33 +56,33 @@ The chat lives inside your workspace, and everything in it, your workflows, tabl
|
||||
|
||||
## Everything within reach
|
||||
|
||||
The chat isn't a help box beside your workspace, it's a control plane over it. Every resource you've built is addressable in plain language: the tickets table, the help-center knowledge base, the support-desk workflow. When you ask a question, Sim decides which resources the answer needs, touches them in parallel, and composes the reply.
|
||||
Chat isn't a help box beside your workspace, it's a command center over it. Every resource you've built is addressable in plain language: the tickets table, the help-center knowledge base, the support-desk workflow. When you ask a question, Sim decides which resources the answer needs, touches them in parallel, and composes the reply.
|
||||
|
||||
Here is the workflow the chat operates in the video: the support desk that triages a ticket, escalates or replies, and logs the result:
|
||||
Here is the workflow Sim operates in the video: the support desk that triages a ticket, escalates or replies, and logs the result:
|
||||
|
||||
<WorkflowPreview workflow={AV_SUPPORT_DESK_WORKFLOW} />
|
||||
|
||||
## Asking it to act
|
||||
|
||||
Telling the chat to *do* something is the same motion as asking it something. Run the backlog through the support desk, ship the weekly digest, put it on a schedule for Friday mornings: each lands as a real operation, confirmed with a toast, with the run's log available the moment it finishes.
|
||||
Telling Sim to *do* something is the same motion as asking it something. Run the backlog through the support desk, ship the weekly digest, put it on a schedule for Friday mornings: each lands as a real operation, confirmed with a toast, with the run's log available the moment it finishes.
|
||||
|
||||
## Research beyond the workspace
|
||||
|
||||
The chat can research beyond your workspace: search X and Reddit for this week's conversations, pull the rising themes, and file them as a new document. What it learns becomes a resource like any other, ready for the next ask.
|
||||
Sim can research beyond your workspace: search X and Reddit for this week's conversations, pull the rising themes, and file them as a new document. What it learns becomes a resource like any other, ready for the next ask.
|
||||
|
||||
## Composing a new workflow
|
||||
|
||||
One sentence can compose what the chat just touched into a new workflow. A watcher that reads the trends file on a schedule, matches them against your tickets, and calls your support-desk workflow when something hits. You described it, and the chat assembled it from the resources you already have.
|
||||
One sentence can compose what Sim just touched into a new workflow. A watcher that reads the trends file on a schedule, matches them against your tickets, and calls your support-desk workflow when something hits. You described it, and Sim assembled it from the resources you already have.
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "What can the Sim chat actually do?", answer: "It answers questions from your workspace data, runs and schedules your workflows, researches the open web, creates documents, and builds new workflows, all from one conversation." },
|
||||
{ question: "How does the chat know which resource to use?", answer: "Every workflow, table, knowledge base, and file in your workspace is addressable by name and description. The chat picks the resources a request needs and can touch several in parallel." },
|
||||
{ question: "Is this the same as building with the chat?", answer: "Operating and building are the same conversation. This lesson covers operating your workspace; the next one, Building with Chat, follows a whole workflow from description to deployment." },
|
||||
{ question: "Can the chat schedule work to run later?", answer: "Yes. Ask it to put a workflow on a schedule and the schedule is created for you, such as a weekly digest that ships every Friday morning." },
|
||||
{ question: "What can Chat actually do?", answer: "It answers questions from your workspace data, runs and schedules your workflows, researches the open web, creates documents, and builds new workflows, all from one conversation." },
|
||||
{ question: "How does Sim know which resource to use?", answer: "Every workflow, table, knowledge base, and file in your workspace is addressable by name and description. Sim picks the resources a request needs and can touch several in parallel." },
|
||||
{ question: "Is this the same as building with Chat?", answer: "Operating and building are the same conversation. This lesson covers operating your workspace; the next one, Building with Chat, follows a whole workflow from description to deployment." },
|
||||
{ question: "Can Chat schedule work to run later?", answer: "Yes. Ask Sim to put a workflow on a schedule and the schedule is created for you, such as a weekly digest that ships every Friday morning." },
|
||||
]} />
|
||||
|
||||
## Related documentation
|
||||
|
||||
- [Chat overview](/mothership)
|
||||
- [Operating workflows from chat](/mothership/workflows)
|
||||
- [Research from chat](/mothership/research)
|
||||
- [Chat overview](/chat)
|
||||
- [Operating workflows from Chat](/chat/workflows)
|
||||
- [Research from Chat](/chat/research)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Choosing what to use
|
||||
description: Pick between a deterministic block, an agent tool, a custom tool, an MCP server, a workflow-as-tool, and a skill.
|
||||
pageType: concept
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Custom Tools
|
||||
description: Create your own tools with JavaScript code and use them in Agent blocks
|
||||
pageType: guide
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Overview
|
||||
description: An agent is a workflow that reasons and acts, built around Agent blocks and the features you give them.
|
||||
pageType: concept
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Using MCP tools
|
||||
description: Connect external tools and services using the Model Context Protocol
|
||||
pageType: guide
|
||||
---
|
||||
|
||||
import { Image } from '@/components/ui/image'
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"title": "Agents",
|
||||
"pages": ["index", "choosing", "custom-tools", "mcp", "skills"]
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Agent skills
|
||||
description: Reusable instruction packages your agents load on demand, managed from the Skills tab.
|
||||
pageType: guide
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
+18
-18
@@ -9,23 +9,23 @@ import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
<Video src="mothership/files-pipeline-deals-summarizer.mp4" width={700} height={450} />
|
||||
|
||||
Describe a document, presentation, image, or visualization and Mothership creates it — streaming the content live into the resource panel as it writes. Attach any file to your message and Mothership reads it, processes it, and saves it to your workspace.
|
||||
Describe a document, presentation, image, or visualization and Sim creates it — streaming the content live into the resource panel as it writes. Attach any file to your message and Sim reads it, processes it, and saves it to your workspace.
|
||||
|
||||
## Uploading Files to the Workspace
|
||||
|
||||
Attach any file directly to your Mothership message — drag it into the input, paste it, or click the attachment icon. Mothership reads the file as context and saves it to your workspace.
|
||||
Attach any file directly to your message in Chat — drag it into the input, paste it, or click the attachment icon. Sim reads the file as context and saves it to your workspace.
|
||||
|
||||
Use this to:
|
||||
- Hand Mothership a document and ask it to process, summarize, or extract data from it
|
||||
- Hand Sim a document and ask it to process, summarize, or extract data from it
|
||||
- Upload a CSV and have it create a table from it
|
||||
- Drop in a PDF and ask Mothership to turn it into a knowledge base document
|
||||
- Attach a design mockup and ask Mothership to describe it or generate code from it
|
||||
- Drop in a PDF and ask Sim to turn it into a knowledge base document
|
||||
- Attach a design mockup and ask Sim to describe it or generate code from it
|
||||
|
||||
Uploaded files appear in the Files panel in the sidebar and are accessible to all workflows in the workspace. Mothership can also fetch a file directly from a URL and save it for you: "Download the JSON at [URL] and save it to the workspace."
|
||||
Uploaded files appear in the Files panel in the sidebar and are accessible to all workflows in the workspace. Sim can also fetch a file directly from a URL and save it for you: "Download the JSON at [URL] and save it to the workspace."
|
||||
|
||||
## Creating Documents
|
||||
|
||||
Mothership can write any text-based file — markdown, plain text, code files, CSV, JSON, or any other format:
|
||||
Sim can write any text-based file — markdown, plain text, code files, CSV, JSON, or any other format:
|
||||
|
||||
- "Write a technical spec for the new auth system as a markdown file"
|
||||
- "Create a CSV of our test accounts with columns for name, email, and plan tier"
|
||||
@@ -47,9 +47,9 @@ Open a file using `@filename` or the **+** menu, then describe the change:
|
||||
|
||||
## Presentations
|
||||
|
||||
<Image src="/static/mothership/pptx-example.png" alt="Mothership resource panel showing a generated Mothership-Use-Cases.pptx file open with the title slide and first use case slide visible" width={900} height={500} />
|
||||
<Image src="/static/mothership/pptx-example.png" alt="Chat resource panel showing a generated Mothership-Use-Cases.pptx file open with the title slide and first use case slide visible" width={900} height={500} />
|
||||
|
||||
Mothership can generate `.pptx` files:
|
||||
Sim can generate `.pptx` files:
|
||||
|
||||
- "Create a pitch deck for Q3 review — 8 slides covering growth, retention, and roadmap"
|
||||
- "Turn this research report into a 10-slide presentation"
|
||||
@@ -61,7 +61,7 @@ The file is saved to your workspace and can be downloaded.
|
||||
|
||||
## Images
|
||||
|
||||
Mothership can generate images using AI, and can use an existing image as a reference to guide the output:
|
||||
Sim can generate images using AI, and can use an existing image as a reference to guide the output:
|
||||
|
||||
**Generating images:**
|
||||
- "Generate a banner image for the new feature announcement — dark background, clean typography"
|
||||
@@ -72,32 +72,32 @@ Mothership can generate images using AI, and can use an existing image as a refe
|
||||
- Attach an existing image to your message, then describe what you want: "Generate a new version of this banner with a blue color scheme instead of green"
|
||||
- "Create a variation of this diagram with the boxes rearranged horizontally [attach image]"
|
||||
|
||||
<Image src="/static/mothership/image-example.png" alt="Mothership resource panel showing a generated hero image of a Mothership-branded blimp flying over San Francisco at golden hour, alongside the chat response linking the file" width={900} height={500} />
|
||||
<Image src="/static/mothership/image-example.png" alt="Chat resource panel showing a generated hero image of a Mothership-branded blimp flying over San Francisco at golden hour, alongside the chat response linking the file" width={900} height={500} />
|
||||
|
||||
Generated images are saved as workspace files.
|
||||
|
||||
## Charts and Visualizations
|
||||
|
||||
Mothership can generate charts and data visualizations from data you describe or reference:
|
||||
Sim can generate charts and data visualizations from data you describe or reference:
|
||||
|
||||
- "Plot the workflow run counts from the metrics table as a bar chart grouped by week"
|
||||
- "Create a line chart of token usage over the past 30 days from this data [paste data]"
|
||||
- "Generate a pie chart showing the distribution of lead sources from the leads table"
|
||||
|
||||
<Image src="/static/mothership/chart-example.png" alt="Mothership resource panel showing a generated chart file with bar charts for backend 5xx errors and error rate over time" width={900} height={500} />
|
||||
<Image src="/static/mothership/chart-example.png" alt="Chat resource panel showing a generated chart file with bar charts for backend 5xx errors and error rate over time" width={900} height={500} />
|
||||
|
||||
Visualizations are saved as files and rendered in the resource panel.
|
||||
|
||||
## Calculations & Data Processing
|
||||
|
||||
For one-off calculations and data transformations, describe what you need and Mothership runs it directly in the chat:
|
||||
For one-off calculations and data transformations, describe what you need and Sim runs it directly in the chat:
|
||||
|
||||
- "Parse this JSON and extract all records where status is 'failed'"
|
||||
- "Calculate the p95 latency from these timing values: [paste values]"
|
||||
- "Convert these Unix timestamps to ISO 8601"
|
||||
- "Deduplicate this list of emails, case-insensitive"
|
||||
|
||||
Results come back directly in the chat. Ask Mothership to save the output as a file if you need it.
|
||||
Results come back directly in the chat. Ask Sim to save the output as a file if you need it.
|
||||
|
||||
## File Viewer Modes
|
||||
|
||||
@@ -113,8 +113,8 @@ When a file opens in the resource panel, you can switch between three views:
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "Where are uploaded and generated files stored?", answer: "All files — uploaded, created, or generated — go to your workspace's Files section. They're accessible from the sidebar and can be referenced in any workflow." },
|
||||
{ question: "Can I use files created in Mothership in workflows?", answer: "Yes. Workspace files can be referenced in workflows using the File block or by passing them as inputs." },
|
||||
{ question: "What file types can I upload to Mothership?", answer: "You can attach images, PDFs, text files, JSON, XML, and other document formats directly to a Mothership message." },
|
||||
{ question: "What can Mothership calculate or process?", answer: "Anything expressible as a short script — parsing JSON, number crunching, string transformations, deduplication, format conversions. Results come back in the chat." },
|
||||
{ question: "Can I use files created in Chat in workflows?", answer: "Yes. Workspace files can be referenced in workflows using the File block or by passing them as inputs." },
|
||||
{ question: "What file types can I upload in Chat?", answer: "You can attach images, PDFs, text files, JSON, XML, and other document formats directly to a message." },
|
||||
{ question: "What can Sim calculate or process?", answer: "Anything expressible as a short script — parsing JSON, number crunching, string transformations, deduplication, format conversions. Results come back in the chat." },
|
||||
{ question: "Is there a file size limit for generated files?", answer: "There is no hard limit on generated file size, but very large files may take longer to stream." },
|
||||
]} />
|
||||
@@ -0,0 +1,73 @@
|
||||
---
|
||||
title: Chat
|
||||
description: Your AI command center. Talk to Sim — build and manage everything in natural language.
|
||||
---
|
||||
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { Video } from '@/components/ui/video'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
<Video src="mothership/create-workflow.mp4" width={700} height={450} />
|
||||
|
||||
Describe what you want and Sim handles it. Build a workflow, run research, generate a presentation, query a table, schedule a recurring job, send a Slack message — Sim knows your entire workspace and takes action directly.
|
||||
|
||||
## What You Can Do
|
||||
|
||||
| Area | What Sim can do |
|
||||
|------|-----------------------|
|
||||
| **[Workflows](/chat/workflows)** | Build, edit, run, debug, deploy, and organize workflows |
|
||||
| **[Research](/chat/research)** | Search the web, read pages, crawl sites, produce research reports |
|
||||
| **[Files & Documents](/chat/files)** | Upload, create, edit, and generate documents, presentations, and images |
|
||||
| **[Tables](/chat/tables)** | Create, query, update, and export workspace tables |
|
||||
| **[Automation & Configuration](/chat/tasks)** | Schedule jobs, take immediate actions, connect integrations, manage tools |
|
||||
| **[Knowledge Bases](/chat/knowledge)** | Create knowledge bases, add documents, and query content in plain language |
|
||||
|
||||
## How It Works
|
||||
|
||||
Sim receives a snapshot of your entire workspace with every message — all workflows, tables, knowledge bases, files, credentials, jobs, and integrations. This is why you can refer to things by name without specifying IDs or paths:
|
||||
|
||||
- "Run the invoice workflow"
|
||||
- "Add a row to the leads table"
|
||||
- "Deploy the summarizer as a chat"
|
||||
|
||||
No configuration, no context-setting. Just describe what you want:
|
||||
|
||||
- "Build a lead enrichment workflow that scores inbound signups and writes the results to the leads table"
|
||||
- "Research our top 5 competitors and save a battle card for each one"
|
||||
- "Schedule a daily job that checks for new high-fit prospects and posts them to #outbound in Slack"
|
||||
- "Create a workflow that takes a contract PDF, extracts the key terms, and emails a summary to legal"
|
||||
|
||||
For complex tasks, Sim delegates to specialized subagents automatically. You'll see them appear as collapsible sections in the chat while they work — building, researching, writing files, executing actions.
|
||||
|
||||
{/* TODO: Screenshot of Chat showing a subagent section expanded mid-task — e.g., the Build or Research subagent actively working, with its collapsible header and steps visible in the thread. */}
|
||||
|
||||
## Adding Context
|
||||
|
||||
Bring any workspace object into the conversation via the **+** menu, `@`-mentions, or drag-and-drop from the sidebar. Sim also opens resources automatically when it creates or modifies them.
|
||||
|
||||
<Video src="mothership/context-menu.mp4" width={700} height={450} />
|
||||
|
||||
{/* TODO: Screenshot of the resource panel with multiple tabs open — a workflow tab, a table tab, and a file tab — showing different resource types side by side. */}
|
||||
|
||||
| What to add | How it appears |
|
||||
|-------------|---------------|
|
||||
| **Workflow** | Interactive canvas in the resource panel |
|
||||
| **Table** | Full table editor in the resource panel |
|
||||
| **File** | File viewer with editor, split, and preview modes |
|
||||
| **Knowledge Base** | Knowledge base management UI |
|
||||
| **Folder** | Folder contents |
|
||||
| **Past task** | A previous Chat conversation |
|
||||
|
||||
## Layout
|
||||
|
||||
Chat has two panes. On the left: the chat thread, where your messages and Sim's responses appear. On the right: the resource panel, where workflows, tables, files, and knowledge bases open as tabs. The panel is resizable; tabs are draggable and closeable.
|
||||
|
||||
<Video src="mothership/split-view.mp4" width={700} height={450} />
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "How is Chat different from working inside a single workflow?", answer: "Inside a workflow, Sim is scoped to that workflow — it helps you build and edit that one thing. In Chat, Sim has access to your entire workspace and can build workflows, manage data, run research, schedule jobs, take actions across integrations, and more." },
|
||||
{ question: "What model does Sim use?", answer: "Sim always uses Claude Opus 4.6. There is no model selector." },
|
||||
{ question: "How do I reference an existing workflow or table?", answer: "Type @ followed by the name in the input, use the + menu, or drag the item from the sidebar into the chat." },
|
||||
{ question: "How long can a Chat task run?", answer: "Up to one hour. For tasks that exceed that, set up a scheduled job or break the work into steps." },
|
||||
{ question: "Can Sim work on multiple things at once?", answer: "Sim processes one message at a time. You can queue messages — they will be processed in order." },
|
||||
]} />
|
||||
+12
-12
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Knowledge bases
|
||||
description: Create, populate, and query knowledge bases from Mothership.
|
||||
description: Create, populate, and query knowledge bases from Chat.
|
||||
---
|
||||
|
||||
import { Image } from '@/components/ui/image'
|
||||
@@ -9,11 +9,11 @@ import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
<Video src="mothership/kb.mp4" width={700} height={450} />
|
||||
|
||||
Create a knowledge base, add documents to it, and query it in plain language — all through conversation. Knowledge bases you create in Mothership are immediately available to Agent blocks in any workflow.
|
||||
Create a knowledge base, add documents to it, and query it in plain language — all through conversation. Knowledge bases you create in Chat are immediately available to Agent blocks in any workflow.
|
||||
|
||||
## Creating Knowledge Bases
|
||||
|
||||
Describe the knowledge base and Mothership creates it:
|
||||
Describe the knowledge base and Sim creates it:
|
||||
|
||||
- "Create a knowledge base called 'Product Docs'"
|
||||
- "Set up a knowledge base for our support team — call it 'Support KB'"
|
||||
@@ -23,20 +23,20 @@ Describe the knowledge base and Mothership creates it:
|
||||
|
||||
## Adding Documents
|
||||
|
||||
Add documents by attaching files to your message, pasting text, or pointing Mothership at a URL:
|
||||
Add documents by attaching files to your message, pasting text, or pointing Sim at a URL:
|
||||
|
||||
- "Add this PDF to the Product Docs knowledge base [attach file]"
|
||||
- "Add the following text to the Support KB as a new document: [paste content]"
|
||||
- "Fetch the page at [URL] and add it to the competitive intelligence knowledge base"
|
||||
- "Add these three uploaded case studies to the customer success knowledge base"
|
||||
|
||||
Mothership processes and indexes each document automatically. Once indexed, the content is searchable by any Agent block that has the knowledge base attached.
|
||||
Sim processes and indexes each document automatically. Once indexed, the content is searchable by any Agent block that has the knowledge base attached.
|
||||
|
||||
{/* TODO: Screenshot of Mothership confirming a document was added and indexed — showing the document name and its indexed status in the knowledge base. */}
|
||||
{/* TODO: Screenshot of Sim confirming a document was added and indexed — showing the document name and its indexed status in the knowledge base. */}
|
||||
|
||||
## Querying Knowledge Bases
|
||||
|
||||
Ask Mothership a question and it searches the specified knowledge base to answer:
|
||||
Ask Sim a question and it searches the specified knowledge base to answer:
|
||||
|
||||
- "What does the Product Docs knowledge base say about our refund policy?"
|
||||
- "Search the Support KB for anything related to SSO setup errors"
|
||||
@@ -47,7 +47,7 @@ Ask Mothership a question and it searches the specified knowledge base to answer
|
||||
|
||||
For knowledge bases that should stay current automatically, connectors sync content from external services on a schedule — no manual uploads needed. New content is added, changed content is re-processed, and deleted content is removed on every run.
|
||||
|
||||
Connectors are configured through the knowledge base settings, not through Mothership chat. Once connected, all synced content is immediately searchable by Mothership and by any Agent block with the knowledge base attached.
|
||||
Connectors are configured through the knowledge base settings, not through Chat. Once connected, all synced content is immediately searchable by Sim and by any Agent block with the knowledge base attached.
|
||||
|
||||
Sim ships with 49 built-in connectors, including Notion, Google Drive, Slack, GitHub, Confluence, HubSpot, Salesforce, Gmail, and more.
|
||||
|
||||
@@ -73,13 +73,13 @@ List, inspect, and clean up knowledge bases in plain language:
|
||||
|
||||
## Using Knowledge Bases in Workflows
|
||||
|
||||
Knowledge bases created in Mothership are immediately available to Agent blocks in any workflow. Attach a knowledge base to an Agent block and it will use semantic search to retrieve relevant content at runtime.
|
||||
Knowledge bases created in Chat are immediately available to Agent blocks in any workflow. Attach a knowledge base to an Agent block and it will use semantic search to retrieve relevant content at runtime.
|
||||
|
||||
See [Knowledge Base](/knowledgebase) for full details on document processing settings, search configuration, and connector syncing.
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "How do I attach a knowledge base to a workflow?", answer: "Open the Agent block in the workflow editor, find the Knowledge Base setting, and select the knowledge base by name. Mothership can also do this for you: 'Attach the Product Docs knowledge base to the research agent block in the content pipeline workflow.'" },
|
||||
{ question: "What file types can I add to a knowledge base?", answer: "PDFs, markdown files, plain text, and web pages fetched from URLs. Mothership handles the parsing and indexing automatically." },
|
||||
{ question: "How do I attach a knowledge base to a workflow?", answer: "Open the Agent block in the workflow editor, find the Knowledge Base setting, and select the knowledge base by name. Sim can also do this for you: 'Attach the Product Docs knowledge base to the research agent block in the content pipeline workflow.'" },
|
||||
{ question: "What file types can I add to a knowledge base?", answer: "PDFs, markdown files, plain text, and web pages fetched from URLs. Sim handles the parsing and indexing automatically." },
|
||||
{ question: "Can I add documents to a knowledge base from a workflow run?", answer: "Yes. The Knowledge Base write tool is available to Agent blocks and can be used to add documents programmatically during a workflow run." },
|
||||
{ question: "How do I keep a knowledge base up to date?", answer: "Set up a connector to sync from an external source automatically — see Connectors above. For one-off updates, ask Mothership to add or replace the document directly." },
|
||||
{ question: "How do I keep a knowledge base up to date?", answer: "Set up a connector to sync from an external source automatically — see Connectors above. For one-off updates, ask Sim to add or replace the document directly." },
|
||||
]} />
|
||||
+1
-1
@@ -64,7 +64,7 @@ Every email becomes a task you can track in **Settings** → **Inbox**:
|
||||
|
||||
## Conversations
|
||||
|
||||
Each email task creates a conversation in your workspace. You can continue the conversation from the Sim chat interface, and any follow-up emails in the same thread are linked to the same conversation.
|
||||
Each email task creates a conversation in your workspace. You can continue the conversation in Chat, and any follow-up emails in the same thread are linked to the same conversation.
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "Can I use my own email domain?", answer: "Not currently. All inbox addresses use the @mothership.sim.ai domain. You can customize the prefix (e.g., acme@mothership.sim.ai) but not the domain itself." },
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"title": "Mothership",
|
||||
"pages": ["index", "workflows", "research", "files", "tables", "tasks", "knowledge"]
|
||||
"title": "Chat",
|
||||
"pages": ["index", "workflows", "research", "files", "tables", "tasks", "knowledge", "mailer"]
|
||||
}
|
||||
+6
-6
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Research
|
||||
description: Ask Mothership to research anything — it searches, reads, and synthesizes from the web.
|
||||
description: Ask Sim to research anything — it searches, reads, and synthesizes from the web.
|
||||
---
|
||||
|
||||
import { Image } from '@/components/ui/image'
|
||||
@@ -9,7 +9,7 @@ import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
<Video src="mothership/research-agent.mp4" width={700} height={450} />
|
||||
|
||||
Ask Mothership to research anything and it figures out the best approach — searching the web, reading specific pages, crawling sites, looking up technical docs. Just describe what you want to know.
|
||||
Ask Sim to research anything and it figures out the best approach — searching the web, reading specific pages, crawling sites, looking up technical docs. Just describe what you want to know.
|
||||
|
||||
## Asking Questions
|
||||
|
||||
@@ -23,11 +23,11 @@ Ask anything — about a company, a competitor, a market, a technical question,
|
||||
- "What does Stripe's API say about handling webhooks with idempotency keys?"
|
||||
- "Who are the main players in AI-powered revenue operations, and how do they differentiate?"
|
||||
|
||||
Mothership returns an answer directly in the chat. For anything that needs a longer written output, ask it to save the result as a file.
|
||||
Sim returns an answer directly in the chat. For anything that needs a longer written output, ask it to save the result as a file.
|
||||
|
||||
## Research Reports
|
||||
|
||||
When you need a structured, saved document rather than a chat answer, ask Mothership to write it up. It searches, reads, and cross-references multiple sources until it has enough to produce a full report. The output is saved as a file in your workspace and opened in the resource panel.
|
||||
When you need a structured, saved document rather than a chat answer, ask Sim to write it up. Sim searches, reads, and cross-references multiple sources until it has enough to produce a full report. The output is saved as a file in your workspace and opened in the resource panel.
|
||||
|
||||
{/* TODO: Screenshot of a completed research report open in the resource panel as a file — showing a structured markdown document with sections, findings, and citations. */}
|
||||
|
||||
@@ -38,7 +38,7 @@ When you need a structured, saved document rather than a chat answer, ask Mother
|
||||
- "Build a battle card for [competitor] — their positioning, pricing, strengths, weaknesses, and how we win against them."
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "Does Mothership have access to real-time information?", answer: "Yes. Mothership queries live internet data. Results reflect current information, not a training cutoff." },
|
||||
{ question: "Can Mothership read pages that require login?", answer: "No. Mothership can only read publicly accessible pages." },
|
||||
{ question: "Does Sim have access to real-time information?", answer: "Yes. Sim queries live internet data. Results reflect current information, not a training cutoff." },
|
||||
{ question: "Can Sim read pages that require login?", answer: "No. Sim can only read publicly accessible pages." },
|
||||
{ question: "Where are research reports saved?", answer: "Reports are saved as files in your workspace and opened in the resource panel. You can find them in the Files section of the sidebar." },
|
||||
]} />
|
||||
+8
-8
@@ -1,18 +1,18 @@
|
||||
---
|
||||
title: Tables
|
||||
description: Create, query, and manage workspace tables from Mothership.
|
||||
description: Create, query, and manage workspace tables from Chat.
|
||||
---
|
||||
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
<Image src="/static/mothership/table-example.png" alt="Mothership resource panel showing the pipeline_deals table with company, deal_owner, stage, and amount columns, alongside a chat summary of total pipeline value and breakdown by stage" width={900} height={500} />
|
||||
<Image src="/static/mothership/table-example.png" alt="Chat resource panel showing the pipeline_deals table with company, deal_owner, stage, and amount columns, alongside a chat summary of total pipeline value and breakdown by stage" width={900} height={500} />
|
||||
|
||||
Create a table from a description or a CSV, query it in plain language, add or update rows, and export the results — all through conversation. Tables open in the resource panel as soon as they're created or referenced.
|
||||
|
||||
## Creating Tables
|
||||
|
||||
Describe the schema and Mothership creates the table:
|
||||
Describe the schema and Sim creates the table:
|
||||
|
||||
- "Create a leads table with columns for name, email, company, status, and created date"
|
||||
- "Create a table that matches the structure of this CSV [attach file]"
|
||||
@@ -31,7 +31,7 @@ Ask questions about table contents in plain language:
|
||||
- "How many prospects have an ICP score above 0.75 and haven't been contacted in the past 30 days?"
|
||||
- "What's the conversion rate from 'contacted' to 'meeting booked' in the pipeline table this month?"
|
||||
|
||||
Mothership translates the question into a structured query and returns the results.
|
||||
Sim translates the question into a structured query and returns the results.
|
||||
|
||||
## Adding and Updating Rows
|
||||
|
||||
@@ -51,10 +51,10 @@ Export a full table or a filtered subset as a CSV. The file is saved to your wor
|
||||
|
||||
## Using Tables in Workflows
|
||||
|
||||
Tables created in Mothership are immediately available in workflows via the [Table tool](/integrations/table). Reference a table by name — no additional configuration needed.
|
||||
Tables created in Chat are immediately available in workflows via the [Table tool](/integrations/table). Reference a table by name — no additional configuration needed.
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "Can Mothership join or combine data from multiple tables?", answer: "Yes. Describe the relationship and what you want — Mothership will query both tables and combine the results." },
|
||||
{ question: "Is there a row limit?", answer: "There is no hard row limit set by Mothership. Performance for very large tables may vary." },
|
||||
{ question: "Can I use a table created in Mothership as a workflow data source?", answer: "Yes. All workspace tables are accessible to the Table block in any workflow." },
|
||||
{ question: "Can Sim join or combine data from multiple tables?", answer: "Yes. Describe the relationship and what you want — Sim will query both tables and combine the results." },
|
||||
{ question: "Is there a row limit?", answer: "There is no hard row limit set by Sim. Performance for very large tables may vary." },
|
||||
{ question: "Can I use a table created in Chat as a workflow data source?", answer: "Yes. All workspace tables are accessible to the Table block in any workflow." },
|
||||
]} />
|
||||
+17
-17
@@ -10,11 +10,11 @@ import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
<Video src="mothership/job-create.mp4" width={700} height={450} />
|
||||
|
||||
Mothership can act on your behalf right now — send a message, create an issue, call an API — or on a schedule, running a prompt automatically every hour, day, or week. It can also connect integrations, set environment variables, add MCP servers, and create custom tools.
|
||||
Sim can act on your behalf right now — send a message, create an issue, call an API — or on a schedule, running a prompt automatically every hour, day, or week. It can also connect integrations, set environment variables, add MCP servers, and create custom tools.
|
||||
|
||||
## Scheduled Jobs
|
||||
|
||||
A scheduled job is a Mothership task that runs on a cron schedule. On each run, Mothership reads the current workspace state and executes the job's prompt as if you had just sent it.
|
||||
A scheduled job is a saved Chat prompt that runs on a cron schedule. On each run, Sim reads the current workspace state and executes the job's prompt as if you had just sent it.
|
||||
|
||||
### Creating a Job
|
||||
|
||||
@@ -28,7 +28,7 @@ Describe the recurring task and how often it should run:
|
||||
- "Every Sunday night, run the lead enrichment workflow on all prospects added in the past week and update their scores in the table"
|
||||
- "Daily at 6am, pull the previous day's workflow errors, summarize the top issues, and post to #eng-alerts"
|
||||
|
||||
Mothership sets the cron expression and stores the job prompt. The first run happens at the next scheduled time.
|
||||
Sim sets the cron expression and stores the job prompt. The first run happens at the next scheduled time.
|
||||
|
||||
### Viewing Job Logs
|
||||
|
||||
@@ -47,9 +47,9 @@ Logs show run time, status (completed, failed), and a summary of what the agent
|
||||
|
||||
## Taking Direct Action
|
||||
|
||||
For requests that should happen right now — without building a workflow — just ask. Mothership acts immediately using the credentials connected to your workspace.
|
||||
For requests that should happen right now — without building a workflow — just ask. Sim acts immediately using the credentials connected to your workspace.
|
||||
|
||||
{/* TODO: Screenshot of Mothership chat showing the "Taking action" subagent label active during a direct action — e.g., posting to Slack or sending an email. Shows the subagent inline in the chat thread. */}
|
||||
{/* TODO: Screenshot of Chat showing the "Taking action" subagent label active during a direct action — e.g., posting to Slack or sending an email. Shows the subagent inline in the chat thread. */}
|
||||
|
||||
| Request | What happens |
|
||||
|---------|-------------|
|
||||
@@ -59,19 +59,19 @@ For requests that should happen right now — without building a workflow — ju
|
||||
| "Add a contact to HubSpot: Acme Corp, ceo@acme.com" | Creates the contact via HubSpot API |
|
||||
| "Call the webhook at [URL] with this JSON payload" | Makes the HTTP request |
|
||||
|
||||
If an integration isn't connected, Mothership walks you through connecting it.
|
||||
If an integration isn't connected, Sim walks you through connecting it.
|
||||
|
||||
## Connecting Integrations
|
||||
|
||||
Mothership can connect new OAuth integrations and API credentials on demand:
|
||||
Sim can connect new OAuth integrations and API credentials on demand:
|
||||
|
||||
- "Connect my Google account"
|
||||
- "Add the Slack workspace for our team"
|
||||
- "Set up GitHub with my personal access token"
|
||||
|
||||
{/* TODO: Screenshot of Mothership walking through connecting an integration — e.g., the Integration subagent active with an OAuth prompt or confirmation that a credential was connected. */}
|
||||
{/* TODO: Screenshot of Sim walking through connecting an integration — e.g., the Integration subagent active with an OAuth prompt or confirmation that a credential was connected. */}
|
||||
|
||||
Once connected, credentials are available to Mothership for direct actions and scheduled jobs, and to all workflows in the workspace.
|
||||
Once connected, credentials are available to Sim for direct actions and scheduled jobs, and to all workflows in the workspace.
|
||||
|
||||
<Callout type="info">
|
||||
Connected credentials are shared across the workspace. Any workflow that uses the same integration will automatically use the same credential.
|
||||
@@ -89,13 +89,13 @@ Environment variables are workspace-scoped values — API keys, connection strin
|
||||
- "Update the SCORING_API_URL variable to point to the new endpoint"
|
||||
- "What environment variables are currently set?"
|
||||
|
||||
{/* TODO: Screenshot of Mothership confirming an environment variable was set — e.g., a response message showing the variable name was saved. */}
|
||||
{/* TODO: Screenshot of Sim confirming an environment variable was set — e.g., a response message showing the variable name was saved. */}
|
||||
|
||||
## MCP Servers
|
||||
|
||||
MCP (Model Context Protocol) servers expose tools from external services that Agent blocks can call inside workflows. Connecting an MCP server makes all of its tools available in the workflow editor's tool picker — no custom integration code required.
|
||||
|
||||
Mothership can add and manage MCP servers connected to your workspace:
|
||||
Sim can add and manage MCP servers connected to your workspace:
|
||||
|
||||
- "Add the Stripe MCP server using my API key"
|
||||
- "Remove the old analytics MCP server"
|
||||
@@ -104,13 +104,13 @@ Mothership can add and manage MCP servers connected to your workspace:
|
||||
|
||||
Once added, MCP tools appear in the workflow editor's tool picker and can be called from any Agent block.
|
||||
|
||||
{/* TODO: Screenshot of Mothership confirming an MCP server was added or updated — showing the server name and its status. */}
|
||||
{/* TODO: Screenshot of Sim confirming an MCP server was added or updated — showing the server name and its status. */}
|
||||
|
||||
## Custom Tools
|
||||
|
||||
Custom tools are single HTTP endpoints you define manually — useful for internal APIs and services that don't have a built-in Sim integration or an MCP server. Once created, they appear in the workflow editor alongside built-in tools and can be called from any Agent block.
|
||||
|
||||
Mothership can build custom tools from a description:
|
||||
Sim can build custom tools from a description:
|
||||
|
||||
- "Create a custom tool that calls our internal scoring API at [URL] with a POST request and returns the score field"
|
||||
- "Build a tool for our Zendesk instance that creates a ticket with a subject and body"
|
||||
@@ -119,13 +119,13 @@ Mothership can build custom tools from a description:
|
||||
|
||||
Custom tools appear in the workflow editor and are callable from any Agent block alongside built-in tools.
|
||||
|
||||
{/* TODO: Screenshot of Mothership with the Custom Tool subagent active — showing it building a tool definition. */}
|
||||
{/* TODO: Screenshot of Chat with the Custom Tool subagent active — showing it building a tool definition. */}
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "What's the difference between a scheduled job and a deployed workflow?", answer: "A scheduled job runs a Mothership prompt on a cron schedule — Mothership decides what to do each time based on current workspace state. A deployed workflow runs a fixed, deterministic graph of blocks. Use jobs when you want Mothership to reason and adapt; use workflows when you want predictable, auditable execution." },
|
||||
{ question: "What's the difference between a scheduled job and a deployed workflow?", answer: "A scheduled job runs a Chat prompt on a cron schedule — Sim decides what to do each time based on current workspace state. A deployed workflow runs a fixed, deterministic graph of blocks. Use jobs when you want Sim to reason and adapt; use workflows when you want predictable, auditable execution." },
|
||||
{ question: "Can a scheduled job trigger a workflow?", answer: "Yes. Include it in the job prompt: 'Run the invoice sync workflow and then post the results to Slack.'" },
|
||||
{ question: "How do I know what integrations are connected?", answer: "Ask Mothership: 'What integrations are connected to this workspace?' or check the Integrations page." },
|
||||
{ question: "Can direct actions be undone?", answer: "No. Actions like sending emails, posting to Slack, or creating records are immediate and irreversible. Confirm the details before asking Mothership to act." },
|
||||
{ question: "How do I know what integrations are connected?", answer: "Ask Sim: 'What integrations are connected to this workspace?' or check the Integrations page." },
|
||||
{ question: "Can direct actions be undone?", answer: "No. Actions like sending emails, posting to Slack, or creating records are immediate and irreversible. Confirm the details before asking Sim to act." },
|
||||
{ question: "Are environment variables visible to all workflows?", answer: "Yes. Environment variables are workspace-scoped and available to every workflow via {{ENV_VAR}} syntax." },
|
||||
{ question: "What's the difference between MCP servers and custom tools?", answer: "MCP servers expose a set of tools from an external service over the MCP protocol — you connect an existing MCP-compatible server. Custom tools are single HTTP endpoints you define manually — useful for internal APIs that don't have an MCP server." },
|
||||
]} />
|
||||
+18
-18
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Workflows
|
||||
description: Create, edit, run, debug, deploy, and organize workflows from Mothership.
|
||||
description: Create, edit, run, debug, deploy, and organize workflows from Chat.
|
||||
---
|
||||
|
||||
import { Image } from '@/components/ui/image'
|
||||
@@ -9,11 +9,11 @@ import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
<Video src="mothership/create-workflow.mp4" width={700} height={450} />
|
||||
|
||||
Describe a workflow and Mothership builds it. Reference an existing one by name and it edits it. No canvas navigation required — every change appears in the resource panel in real time.
|
||||
Describe a workflow and Sim builds it. Reference an existing one by name and Sim edits it. No canvas navigation required — every change appears in the resource panel in real time.
|
||||
|
||||
## Creating Workflows
|
||||
|
||||
Describe what the workflow should do — what triggers it, what it should do, which integrations it needs, and what it should return. Mothership builds it and opens the canvas in the resource panel.
|
||||
Describe what the workflow should do — what triggers it, what it should do, which integrations it needs, and what it should return. Sim builds it and opens the canvas in the resource panel.
|
||||
|
||||
- "Build a workflow that takes a URL, scrapes the page, summarizes it with Claude, and sends the summary to a Slack channel"
|
||||
- "Create a workflow triggered by a webhook that extracts invoice data from a PDF and writes it to the billing table"
|
||||
@@ -23,9 +23,9 @@ Describe what the workflow should do — what triggers it, what it should do, wh
|
||||
|
||||
## Editing Workflows
|
||||
|
||||
{/* TODO: Screenshot of Mothership with the Edit subagent active and a change applied to an open workflow — e.g., a new block added or a configuration updated, visible on the canvas in the resource panel. */}
|
||||
{/* TODO: Screenshot of Chat with the Edit subagent active and a change applied to an open workflow — e.g., a new block added or a configuration updated, visible on the canvas in the resource panel. */}
|
||||
|
||||
Open an existing workflow with `@workflow-name` or the **+** menu, then describe the change. Mothership reads the current structure before modifying it — you don't need to explain what already exists.
|
||||
Open an existing workflow with `@workflow-name` or the **+** menu, then describe the change. Sim reads the current structure before modifying it — you don't need to explain what already exists.
|
||||
|
||||
- "Add a condition that routes to a different branch if the confidence score is below 0.7"
|
||||
- "Replace the GPT-4o model with Claude Opus 4.6 on the summarizer block"
|
||||
@@ -35,7 +35,7 @@ Open an existing workflow with `@workflow-name` or the **+** menu, then describe
|
||||
|
||||
<Video src="mothership/run-workflow.mp4" width={700} height={450} />
|
||||
|
||||
Ask Mothership to run a workflow and it handles the execution:
|
||||
Ask Sim to run a workflow and it handles the execution:
|
||||
|
||||
- "Run the data sync workflow"
|
||||
- "Run the invoice processor with this PDF [attach file]"
|
||||
@@ -45,7 +45,7 @@ Execution streams back to the chat. The workflow in the resource panel shows liv
|
||||
|
||||
## Reading Logs
|
||||
|
||||
Mothership can retrieve and interpret execution logs for any workflow in the workspace:
|
||||
Sim can retrieve and interpret execution logs for any workflow in the workspace:
|
||||
|
||||
- "Show me the last 10 runs of the pipeline workflow"
|
||||
- "Why did the invoice workflow fail yesterday?"
|
||||
@@ -55,18 +55,18 @@ Logs include per-block execution state, outputs, errors, and timing.
|
||||
|
||||
## Debugging
|
||||
|
||||
When a workflow fails, tell Mothership to debug it:
|
||||
When a workflow fails, tell Sim to debug it:
|
||||
|
||||
- "Debug the last failed run of the content pipeline"
|
||||
- "The summarizer block is returning empty output — figure out why"
|
||||
|
||||
Mothership reads the failure logs, identifies the cause, applies a fix, and can re-run to confirm.
|
||||
Sim reads the failure logs, identifies the cause, applies a fix, and can re-run to confirm.
|
||||
|
||||
{/* TODO: Screenshot of the Debug subagent section in the Mothership chat showing it reading logs and applying a fix. */}
|
||||
{/* TODO: Screenshot of the Debug subagent section in Chat showing it reading logs and applying a fix. */}
|
||||
|
||||
## Deploying
|
||||
|
||||
Mothership can deploy a workflow as any of the three deployment types:
|
||||
Sim can deploy a workflow as any of the three deployment types:
|
||||
|
||||
| Deployment type | What it creates |
|
||||
|----------------|----------------|
|
||||
@@ -76,13 +76,13 @@ Mothership can deploy a workflow as any of the three deployment types:
|
||||
|
||||
Ask: "Deploy the invoice workflow as an API and generate an API key."
|
||||
|
||||
Mothership can also roll back: "Revert the billing workflow to the version from last Tuesday."
|
||||
Sim can also roll back: "Revert the billing workflow to the version from last Tuesday."
|
||||
|
||||
See [API Deployment](/workflows/deployment/api) and [Chat Deployment](/workflows/deployment/chat) for full details on each deployment type.
|
||||
|
||||
## Organizing Workflows
|
||||
|
||||
Mothership can create and manage folders to keep your workspace organized.
|
||||
Sim can create and manage folders to keep your workspace organized.
|
||||
|
||||
**Folders:**
|
||||
- "Create a folder called 'Data Pipelines'"
|
||||
@@ -94,11 +94,11 @@ Mothership can create and manage folders to keep your workspace organized.
|
||||
- "Rename the 'test_v2' workflow to 'lead-scorer'"
|
||||
- "Move the summarizer workflow to the research folder"
|
||||
|
||||
{/* TODO: Screenshot showing Mothership confirming a folder or workflow organization action — e.g., a message confirming "Moved 'invoice-processor' into 'billing' folder" with the resource panel showing the folder open. */}
|
||||
{/* TODO: Screenshot showing Sim confirming a folder or workflow organization action — e.g., a message confirming "Moved 'invoice-processor' into 'billing' folder" with the resource panel showing the folder open. */}
|
||||
|
||||
## Workflow Variables
|
||||
|
||||
Mothership can set global variables on a workflow — values accessible across all blocks in that workflow at runtime:
|
||||
Sim can set global variables on a workflow — values accessible across all blocks in that workflow at runtime:
|
||||
|
||||
- "Set the API_ENDPOINT variable on the sync workflow to 'https://api.example.com/v2'"
|
||||
- "Update the MAX_RETRIES variable on the pipeline workflow to 5"
|
||||
@@ -111,8 +111,8 @@ Variables set this way are available via `<variable.VARIABLE_NAME>` syntax insid
|
||||
- "Delete all workflows in the deprecated folder"
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "Can Mothership edit a workflow while it's deployed?", answer: "Yes. Editing a workflow does not affect the live deployment. The deployed version is a snapshot — you need to ask Mothership to redeploy to push changes to production." },
|
||||
{ question: "Can I run a workflow with specific inputs from Mothership?", answer: "Yes. Describe the inputs in your message and Mothership passes them to the workflow's start block." },
|
||||
{ question: "How does Mothership know what my workflow does?", answer: "When you reference a workflow, Mothership loads its full structure — every block, connection, and configuration — before acting on it." },
|
||||
{ question: "Can Sim edit a workflow while it's deployed?", answer: "Yes. Editing a workflow does not affect the live deployment. The deployed version is a snapshot — you need to ask Sim to redeploy to push changes to production." },
|
||||
{ question: "Can I run a workflow with specific inputs from Chat?", answer: "Yes. Describe the inputs in your message and Sim passes them to the workflow's start block." },
|
||||
{ question: "How does Sim know what my workflow does?", answer: "When you reference a workflow, Sim loads its full structure — every block, connection, and configuration — before acting on it." },
|
||||
{ question: "What happens to a workflow's deployment when I delete it?", answer: "The workflow and all its deployments are permanently removed. Any API endpoints, chat URLs, or MCP tools that pointed to that workflow will stop working." },
|
||||
]} />
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Editor
|
||||
description: A rich markdown editor for your files — type markdown and watch it render, or edit visually.
|
||||
pageType: concept
|
||||
---
|
||||
|
||||
import { Image } from '@/components/ui/image'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Generating files
|
||||
description: How a workflow produces a document, report, or media file and saves it to the workspace Files store.
|
||||
pageType: concept
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Overview
|
||||
description: Files are the documents, images, spreadsheets, and PDFs your workflows read and produce.
|
||||
pageType: concept
|
||||
---
|
||||
|
||||
import { Card, Cards } from 'fumadocs-ui/components/card'
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"title": "Files",
|
||||
"pages": ["index", "editor", "using-in-workflows", "generating", "passing-files"]
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Passing files
|
||||
description: How file objects move between blocks, into workflows via the API, and back out in responses.
|
||||
pageType: guide
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Using files in workflows
|
||||
description: Read a file's contents in a workflow, pass a file to a block that needs one, or save a new file from a run.
|
||||
pageType: concept
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Getting Started
|
||||
description: Build your first agent in 10 minutes — a people researcher with web search tools and structured output.
|
||||
pageType: guide
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
@@ -101,6 +100,6 @@ Build a people research agent in 10 minutes. It takes a name through a chat inte
|
||||
{ question: "Do I need API keys to follow this tutorial?", answer: "No. On hosted Sim, the model and the search tools run on Sim's hosted keys, included with your plan credits. You can bring your own provider keys if you prefer." },
|
||||
{ question: "Do I need coding experience to complete this tutorial?", answer: "No. The whole tutorial uses the visual builder and the chat panel — no code." },
|
||||
{ question: "Can I use a different model?", answer: "Yes. The Agent block supports models from OpenAI, Anthropic, Google, Groq, Cerebras, DeepSeek, xAI, and more, plus local models through Ollama if you self-host." },
|
||||
{ question: "Can I import workflows from other tools?", answer: "Not directly. But you can describe what you want to Mothership in natural language and have it build the workflow for you, which is usually faster than manual recreation." },
|
||||
{ question: "Can I import workflows from other tools?", answer: "Not directly. But you can describe what you want to Sim in natural language and have it build the workflow for you, which is usually faster than manual recreation." },
|
||||
{ question: "What if my workflow does not produce the expected output?", answer: "Test iteratively in the Chat panel and inspect each block's output from the dropdown to pinpoint where things go wrong. The Logs page records every run, block by block, with inputs, outputs, timing, and cost." },
|
||||
]} />
|
||||
|
||||
@@ -6,7 +6,7 @@ import { Card, Cards } from 'fumadocs-ui/components/card'
|
||||
|
||||
# Sim Documentation
|
||||
|
||||
Welcome to Sim, the open-source AI workspace where teams build, deploy, and manage AI agents. Create agents visually with the workflow builder, conversationally through Mothership, or programmatically with the API — connected to 1,000+ integrations and every major LLM.
|
||||
Welcome to Sim, the open-source AI workspace where teams build, deploy, and manage AI agents. Create agents visually with the workflow builder, conversationally through Chat, or programmatically with the API — connected to 1,000+ integrations and every major LLM.
|
||||
|
||||
## Quick Start
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: HubSpot setup guide
|
||||
description: Install, configure, use, and disconnect the Sim HubSpot integration.
|
||||
pageType: guide
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Integrations
|
||||
description: Connect third-party services and OAuth accounts for your workflows
|
||||
pageType: guide
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -9,7 +9,7 @@ import { Image } from '@/components/ui/image'
|
||||
import { Video } from '@/components/ui/video'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
Sim is the open-source AI workspace where teams build, deploy, and manage AI agents. You build by describing what you want to **Mothership**, the natural-language control plane, or visually in the workflow builder, or programmatically with the API. Connect AI models, databases, APIs, and 1,000+ business tools to build agents that automate real work.
|
||||
Sim is the open-source AI workspace where teams build, deploy, and manage AI agents. Build visually in the workflow builder, conversationally in **Chat**, or with code through the API. Connect 1,000+ integrations and every major LLM to create agents that automate real work.
|
||||
|
||||
<div className="mx-auto w-full overflow-hidden rounded-lg my-6">
|
||||
<Image
|
||||
@@ -23,23 +23,23 @@ Sim is the open-source AI workspace where teams build, deploy, and manage AI age
|
||||
|
||||
## How you build
|
||||
|
||||
When you open Sim, the first thing you meet is **Mothership**, a chat box over your whole workspace. You describe the system you want, and Mothership scaffolds it: workflows, tables, knowledge bases, and the wiring between them. You then open what it built, run it, and refine it.
|
||||
When you open Sim, the first thing you meet is **Chat**, a conversation over your whole workspace. You describe the system you want, and Sim scaffolds it: workflows, tables, knowledge bases, and the wiring between them. You then open what it built, run it, and refine it.
|
||||
|
||||
- **Mothership.** Describe a system in natural language and it creates and edits the resources for you. The fastest way to start.
|
||||
- **Chat.** Describe a system in natural language and Sim creates and edits the resources for you. The fastest way to start.
|
||||
- **Workflow builder.** Design agent logic visually by connecting blocks in the builder. The clearest way to see and fine-tune what runs.
|
||||
- **API and SDK.** Build and trigger agents programmatically.
|
||||
|
||||
You can mix these on one system, scaffolding with Mothership and then fine-tuning in the builder.
|
||||
You can mix these on one system, scaffolding in Chat and then fine-tuning in the builder.
|
||||
|
||||
<Callout type="info">
|
||||
Mothership generates the architecture, and you verify the execution. Even when you build conversationally, it helps to understand the resources Mothership creates, so you can inspect, run, and improve them.
|
||||
Sim generates the architecture, and you verify the execution. Even when you build conversationally, it helps to understand the resources Sim creates, so you can inspect, run, and improve them.
|
||||
</Callout>
|
||||
|
||||
## The anatomy of a workspace
|
||||
|
||||
A Sim system is not a single chat response. It is a set of resources that live in a **workspace** and connect to each other. The sidebar mirrors that anatomy, and these are its parts.
|
||||
|
||||
- **[Mothership](/mothership)** is the natural-language control plane. You describe what you want, and it builds and edits the resources for you.
|
||||
- **[Chat](/chat)** is your AI command center. Talk to Sim — build and manage everything in natural language.
|
||||
- **[Workflows](/workflows)** are visual programs made of blocks, where your logic runs. Most other resources become useful through a workflow.
|
||||
- **[Agents and tools](/agents)** are how a workflow acts. An agent reasons with a model, and tools let it take actions like sending an email or querying an API.
|
||||
- **[Tables](/tables)** hold structured rows your workflows read, write, and process.
|
||||
@@ -83,8 +83,8 @@ For anything not built in, [MCP support](/agents/mcp) connects any external serv
|
||||
<Card title="Quickstart" href="/getting-started">
|
||||
Build your first agent in 10 minutes
|
||||
</Card>
|
||||
<Card title="Building with Mothership" href="/mothership">
|
||||
Create and operate your workspace in natural language
|
||||
<Card title="Building with Chat" href="/chat">
|
||||
Build and manage your workspace in natural language
|
||||
</Card>
|
||||
<Card title="Workflows" href="/workflows">
|
||||
The executable center, and the blocks it's built from
|
||||
@@ -98,9 +98,9 @@ For anything not built in, [MCP support](/agents/mcp) connects any external serv
|
||||
{ question: "Is Sim free to use?", answer: "Sim offers a free Community plan with 1,000 one-time credits to get started. Paid plans start at $25/month (Pro) with 5,000 credits and go up to $100/month (Max) with 20,000 credits. Annual billing is available at a 15% discount. You can also self-host Sim for free on your own infrastructure." },
|
||||
{ question: "Is Sim open source?", answer: "Yes. Sim is open source under the Apache 2.0 license. The full source code is available on GitHub and you can self-host it, contribute to development, or modify it for your own needs. Enterprise features (SSO, access control) have a separate license that requires a subscription for production use." },
|
||||
{ question: "Which AI models and providers are supported?", answer: "Sim supports 15+ providers including OpenAI, Anthropic, Google Gemini, Groq, Cerebras, DeepSeek, Mistral, xAI, and OpenRouter. You can also run local models through Ollama or VLLM at no API cost. Bring Your Own Key (BYOK) is supported so you can use your own API keys at base provider pricing with no markup." },
|
||||
{ question: "Do I need coding experience to use Sim?", answer: "No. Sim lets you build agents conversationally through Mothership using natural language, or visually by connecting blocks in the workflow builder. For advanced use cases, the Function block lets you write custom JavaScript, and the full API/SDK is available for programmatic access." },
|
||||
{ question: "Do I need coding experience to use Sim?", answer: "No. You build agents conversationally in Chat, visually by connecting blocks in the workflow builder, or with code. For advanced cases, the Function block runs custom JavaScript, and the full API and SDK are available for programmatic access." },
|
||||
{ question: "Can I self-host Sim?", answer: "Yes. Sim provides Docker Compose configurations for self-hosted deployments. The stack includes the Sim application, a PostgreSQL database with pgvector, and a realtime collaboration server. You can also integrate local AI models via Ollama for a fully offline setup." },
|
||||
{ question: "Is there a limit on how many workflows I can create?", answer: "There is no limit on the number of workflows you can create on any plan. Usage limits apply to execution credits, rate limits, and file storage, which vary by plan tier." },
|
||||
{ question: "What integrations are available?", answer: "Sim offers 1,000+ native integrations across categories including AI models, communication tools (Gmail, Slack, Teams, Telegram), productivity apps (Notion, Google Workspace, Airtable), development tools (GitHub, Jira, Linear), search services (Google Search, Perplexity, Exa), and databases (PostgreSQL, Supabase, Pinecone). For anything not built in, you can use the MCP (Model Context Protocol) support to connect custom services." },
|
||||
{ question: "How does Sim compare to other AI agent builders?", answer: "Sim is an AI workspace, not just a workflow tool or an agent framework. It combines Mothership for natural-language agent creation, a visual workflow builder, knowledge bases, tables, and full observability in one environment. Teams build agents visually, conversationally, or with code, then deploy and manage them with enterprise governance, real-time collaboration, and staging-to-production workflows." },
|
||||
{ question: "How does Sim compare to other AI agent builders?", answer: "Sim is an AI workspace. Chat, the visual workflow builder, knowledge bases, tables, and full observability live in one environment, so teams build agents visually, conversationally, or with code. Then they deploy and manage those agents with enterprise governance, real-time collaboration, and staging-to-production workflows." },
|
||||
]} />
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Chunking strategies
|
||||
description: The chunking settings and strategies, for the rare case you need to override Auto.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Connectors
|
||||
description: Automatically sync documents from external sources into your knowledge base
|
||||
pageType: guide
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Debugging retrieval
|
||||
description: Why a Knowledge block search returns no results, wrong results, or duplicates, and how to fix each one.
|
||||
pageType: guide
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Overview
|
||||
description: A store of documents your agents can search by meaning.
|
||||
pageType: concept
|
||||
---
|
||||
|
||||
import { Video } from '@/components/ui/video'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Using a knowledge base in a workflow
|
||||
description: How the Knowledge block searches a knowledge base and what it returns, so an agent can ground its answers in your documents.
|
||||
pageType: concept
|
||||
---
|
||||
|
||||
import { Card, Cards } from 'fumadocs-ui/components/card'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Alerts
|
||||
description: Get notified when a workflow fails, slows down, costs too much, or goes quiet.
|
||||
pageType: concept
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Overview
|
||||
description: A log is the recorded trace of one workflow run, and debugging is reading that trace backward from the block that failed.
|
||||
pageType: concept
|
||||
---
|
||||
|
||||
import { Card, Cards } from 'fumadocs-ui/components/card'
|
||||
@@ -90,7 +89,7 @@ When a value is the wrong shape, reshape it in a [Function](/workflows/blocks/fu
|
||||
|
||||
## AI-assisted debugging
|
||||
|
||||
Mothership and Copilot can read a run's logs and propose a fix from the trace: the error message, the input the block received, and the output the upstream block produced. The logs stay the ground truth. You confirm a proposed fix the same way you confirm your own: rerun the workflow and compare the new trace against the failed one.
|
||||
Sim can read a run's logs and propose a fix from the trace: the error message, the input the block received, and the output the upstream block produced. The logs stay the ground truth. You confirm a proposed fix the same way you confirm your own: rerun the workflow and compare the new trace against the failed one.
|
||||
|
||||
## Retention
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Logging
|
||||
description: Where run logs live — the real-time console, the Logs page, and what each entry records.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"title": "Logs",
|
||||
"pages": ["index", "logging", "alerts"]
|
||||
}
|
||||
@@ -4,65 +4,23 @@
|
||||
"---Get Started---",
|
||||
"./introduction/index",
|
||||
"./getting-started/index",
|
||||
"---Workflows---",
|
||||
"./workflows/index",
|
||||
"./workflows/how-it-runs",
|
||||
"./workflows/data-flow",
|
||||
"./workflows/connections",
|
||||
"./workflows/variables",
|
||||
"workflows/deployment",
|
||||
"workflows/triggers",
|
||||
"workflows/blocks",
|
||||
"---Agents---",
|
||||
"./agents/index",
|
||||
"./agents/choosing",
|
||||
"./agents/custom-tools",
|
||||
"./agents/mcp",
|
||||
"./agents/skills",
|
||||
"./integrations/knowledge",
|
||||
"./integrations/memory",
|
||||
"---Tables---",
|
||||
"./tables/index",
|
||||
"./tables/using-in-workflows",
|
||||
"./tables/workflow-columns",
|
||||
"---Files---",
|
||||
"./files/index",
|
||||
"./files/editor",
|
||||
"./files/using-in-workflows",
|
||||
"./files/generating",
|
||||
"./files/passing-files",
|
||||
"---Knowledge Bases---",
|
||||
"./knowledgebase/index",
|
||||
"./knowledgebase/using-in-workflows",
|
||||
"./knowledgebase/connectors",
|
||||
"./knowledgebase/tags",
|
||||
"./knowledgebase/debugging-retrieval",
|
||||
"./knowledgebase/chunking-strategies",
|
||||
"---Logs & Debugging---",
|
||||
"./logs-debugging/index",
|
||||
"./logs-debugging/logging",
|
||||
"./logs-debugging/alerts",
|
||||
"---Mothership---",
|
||||
"./mothership/index",
|
||||
"./mothership/workflows",
|
||||
"./mothership/research",
|
||||
"./mothership/files",
|
||||
"./mothership/tables",
|
||||
"./mothership/tasks",
|
||||
"./mothership/knowledge",
|
||||
"./mothership/mailer",
|
||||
"---Platform---",
|
||||
"./platform/workspaces",
|
||||
"./platform/organization",
|
||||
"./platform/permissions",
|
||||
"./platform/credentials",
|
||||
"./platform/costs",
|
||||
"platform/self-hosting",
|
||||
"---Build---",
|
||||
"chat",
|
||||
"workflows",
|
||||
"agents",
|
||||
"---Workspace---",
|
||||
"knowledgebase",
|
||||
"tables",
|
||||
"files",
|
||||
"logs-debugging",
|
||||
"---Administration---",
|
||||
"platform",
|
||||
"platform/enterprise",
|
||||
"platform/self-hosting",
|
||||
"---Reference---",
|
||||
"integrations",
|
||||
"./quick-reference/index",
|
||||
"./keyboard-shortcuts/index",
|
||||
"integrations"
|
||||
"./keyboard-shortcuts/index"
|
||||
],
|
||||
"defaultOpen": false
|
||||
}
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
---
|
||||
title: Building with Mothership
|
||||
description: Your AI command center. Build and manage your entire workspace in natural language.
|
||||
---
|
||||
|
||||
import { Image } from '@/components/ui/image'
|
||||
import { Video } from '@/components/ui/video'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
|
||||
<Video src="mothership/create-workflow.mp4" width={700} height={450} />
|
||||
|
||||
Describe what you want and Mothership handles it. Build a workflow, run research, generate a presentation, query a table, schedule a recurring job, send a Slack message — Mothership knows your entire workspace and takes action directly.
|
||||
|
||||
## What You Can Do
|
||||
|
||||
| Area | What Mothership can do |
|
||||
|------|-----------------------|
|
||||
| **[Workflows](/mothership/workflows)** | Build, edit, run, debug, deploy, and organize workflows |
|
||||
| **[Research](/mothership/research)** | Search the web, read pages, crawl sites, produce research reports |
|
||||
| **[Files & Documents](/mothership/files)** | Upload, create, edit, and generate documents, presentations, and images |
|
||||
| **[Tables](/mothership/tables)** | Create, query, update, and export workspace tables |
|
||||
| **[Automation & Configuration](/mothership/tasks)** | Schedule jobs, take immediate actions, connect integrations, manage tools |
|
||||
| **[Knowledge Bases](/mothership/knowledge)** | Create knowledge bases, add documents, and query content in plain language |
|
||||
|
||||
## How It Works
|
||||
|
||||
Mothership receives a snapshot of your entire workspace with every message — all workflows, tables, knowledge bases, files, credentials, jobs, and integrations. This is why you can refer to things by name without specifying IDs or paths:
|
||||
|
||||
- "Run the invoice workflow"
|
||||
- "Add a row to the leads table"
|
||||
- "Deploy the summarizer as a chat"
|
||||
|
||||
No configuration, no context-setting. Just describe what you want:
|
||||
|
||||
- "Build a lead enrichment workflow that scores inbound signups and writes the results to the leads table"
|
||||
- "Research our top 5 competitors and save a battle card for each one"
|
||||
- "Schedule a daily job that checks for new high-fit prospects and posts them to #outbound in Slack"
|
||||
- "Create a workflow that takes a contract PDF, extracts the key terms, and emails a summary to legal"
|
||||
|
||||
For complex tasks, Mothership delegates to specialized subagents automatically. You'll see them appear as collapsible sections in the chat while they work — building, researching, writing files, executing actions.
|
||||
|
||||
{/* TODO: Screenshot of the Mothership chat showing a subagent section expanded mid-task — e.g., the Build or Research subagent actively working, with its collapsible header and steps visible in the thread. */}
|
||||
|
||||
## Adding Context
|
||||
|
||||
Bring any workspace object into the conversation via the **+** menu, `@`-mentions, or drag-and-drop from the sidebar. Mothership also opens resources automatically when it creates or modifies them.
|
||||
|
||||
<Video src="mothership/context-menu.mp4" width={700} height={450} />
|
||||
|
||||
{/* TODO: Screenshot of the resource panel with multiple tabs open — a workflow tab, a table tab, and a file tab — showing different resource types side by side. */}
|
||||
|
||||
| What to add | How it appears |
|
||||
|-------------|---------------|
|
||||
| **Workflow** | Interactive canvas in the resource panel |
|
||||
| **Table** | Full table editor in the resource panel |
|
||||
| **File** | File viewer with editor, split, and preview modes |
|
||||
| **Knowledge Base** | Knowledge base management UI |
|
||||
| **Folder** | Folder contents |
|
||||
| **Past task** | A previous Mothership conversation |
|
||||
|
||||
## Layout
|
||||
|
||||
Mothership has two panes. On the left: the chat thread, where your messages and Mothership's responses appear. On the right: the resource panel, where workflows, tables, files, and knowledge bases open as tabs. The panel is resizable; tabs are draggable and closeable.
|
||||
|
||||
<Video src="mothership/split-view.mp4" width={700} height={450} />
|
||||
|
||||
<FAQ items={[
|
||||
{ question: "How is Mothership different from Copilot?", answer: "Copilot is scoped to a single workflow — it helps you build and edit that workflow. Mothership has access to your entire workspace and can build workflows, manage data, run research, schedule jobs, take actions across integrations, and more." },
|
||||
{ question: "What model does Mothership use?", answer: "Mothership always uses Claude Opus 4.6. There is no model selector." },
|
||||
{ question: "How do I reference an existing workflow or table?", answer: "Type @ followed by the name in the input, use the + menu, or drag the item from the sidebar into the chat." },
|
||||
{ question: "How long can a Mothership task run?", answer: "Up to one hour. For tasks that exceed that, set up a scheduled job or break the work into steps." },
|
||||
{ question: "Can Mothership work on multiple things at once?", answer: "Mothership processes one message at a time. You can queue messages — they will be processed in order." },
|
||||
]} />
|
||||
@@ -246,11 +246,11 @@ When configured, workflows use your key instead of Sim's hosted keys. If removed
|
||||
|
||||
## Voice Input
|
||||
|
||||
Voice input uses ElevenLabs Scribe v2 Realtime for speech-to-text transcription. It is available in the Mothership chat and in deployed chat voice mode.
|
||||
Voice input uses ElevenLabs Scribe v2 Realtime for speech-to-text transcription. It is available in Chat and in deployed chat voice mode.
|
||||
|
||||
| Context | Cost per session | Max duration |
|
||||
|---------|-----------------|--------------|
|
||||
| Mothership (workspace) | ~5 credits ($0.024) | 3 minutes |
|
||||
| Chat (workspace) | ~5 credits ($0.024) | 3 minutes |
|
||||
| Deployed chat (voice mode) | ~2 credits ($0.008) | 1 minute |
|
||||
|
||||
Each voice session is billed when it starts. In deployed chat voice mode, each conversation turn (speak → agent responds → speak again) is a separate session. Multi-turn conversations are billed per turn.
|
||||
|
||||
@@ -7,7 +7,7 @@ import { Callout } from 'fumadocs-ui/components/callout'
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
import { Image } from '@/components/ui/image'
|
||||
|
||||
Access Control lets organization admins define permission groups that restrict what each set of users can do — which AI model providers they can use, which workflow blocks they can place, and which platform features are visible to them. Permission groups are scoped to the **organization**. The organization's **default group** governs everyone org-wide; every other group targets a **specific set of workspaces** and, by default, governs **all members of those workspaces** (including external members) — or only specific members once you add them. A user is governed by exactly one group in any given workspace. Restrictions are enforced both in the workflow executor and in Mothership, based on the organization that owns the workflow's workspace.
|
||||
Access Control lets organization admins define permission groups that restrict what each set of users can do — which AI model providers they can use, which workflow blocks they can place, and which platform features are visible to them. Permission groups are scoped to the **organization**. The organization's **default group** governs everyone org-wide; every other group targets a **specific set of workspaces** and, by default, governs **all members of those workspaces** (including external members) — or only specific members once you add them. A user is governed by exactly one group in any given workspace. Restrictions are enforced both in the workflow executor and in Chat, based on the organization that owns the workflow's workspace.
|
||||
|
||||
---
|
||||
|
||||
@@ -24,10 +24,10 @@ Sim resolves the governing group for a user in a workspace deterministically:
|
||||
|
||||
Assignment-time checks keep this unambiguous: a workspace has at most one all-members group, and a user is an explicit member of at most one group per workspace.
|
||||
|
||||
When a user runs a workflow or uses Mothership, Sim reads the resolved group's configuration and applies it:
|
||||
When a user runs a workflow or uses Chat, Sim reads the resolved group's configuration and applies it:
|
||||
|
||||
- **In the executor:** If a workflow uses a disallowed block type or model provider, execution halts immediately with an error. This applies to both manual runs and scheduled or API-triggered deployments.
|
||||
- **In Mothership:** Disallowed blocks are filtered out of the block list so they cannot be added to a workflow. Disallowed tool types (MCP, custom tools, skills) are skipped if Mothership attempts to use them.
|
||||
- **In Chat:** Disallowed blocks are filtered out of the block list so they cannot be added to a workflow. Disallowed tool types (MCP, custom tools, skills) are skipped if Sim attempts to use them.
|
||||
|
||||
---
|
||||
|
||||
@@ -161,12 +161,12 @@ Restrictions are enforced at the point of execution, not at save time. If a grou
|
||||
|
||||
This applies regardless of how the workflow is triggered — manually, via API, via schedule, or via webhook.
|
||||
|
||||
### Mothership
|
||||
### Chat
|
||||
|
||||
When a user opens Mothership, their permission group is read before any block or tool suggestions are made:
|
||||
When a user opens Chat, their permission group is read before any block or tool suggestions are made:
|
||||
|
||||
- Blocks not in the allowed list are filtered out of the block picker entirely — they do not appear as options.
|
||||
- If Mothership generates a workflow step that would use a disallowed tool (MCP, custom, or skills), that step is skipped and the reason is noted.
|
||||
- If Sim generates a workflow step that would use a disallowed tool (MCP, custom, or skills), that step is skipped and the reason is noted.
|
||||
|
||||
---
|
||||
|
||||
@@ -208,8 +208,8 @@ When a user opens Mothership, their permission group is read before any block or
|
||||
answer: "In a workspace targeted by an all-members group (one with no members), that group governs them. Otherwise the organization's default group governs them if one is set. If neither applies, they have no restrictions — all blocks, model providers, and platform features are available."
|
||||
},
|
||||
{
|
||||
question: "Does Mothership respect the same restrictions as the executor?",
|
||||
answer: "Yes. Mothership reads the user's permission group for the workspace's organization before suggesting blocks or tools. Disallowed blocks are filtered out of the block picker, and disallowed tool types are skipped during workflow generation."
|
||||
question: "Does Chat respect the same restrictions as the executor?",
|
||||
answer: "Yes. Sim reads the user's permission group for the workspace's organization before suggesting blocks or tools. Disallowed blocks are filtered out of the block picker, and disallowed tool types are skipped during workflow generation."
|
||||
},
|
||||
{
|
||||
question: "Can I apply different restrictions to different people or workspaces?",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Data Drains
|
||||
description: Continuously export workflow logs, audit logs, and Mothership data to your own object store, data warehouse, observability platform, or HTTPS endpoint on a schedule
|
||||
description: Continuously export workflow logs, audit logs, and Chat data to your own object store, data warehouse, observability platform, or HTTPS endpoint on a schedule
|
||||
---
|
||||
|
||||
import { FAQ } from '@/components/ui/faq'
|
||||
@@ -37,12 +37,12 @@ A drain exports exactly one source. To export multiple sources, create multiple
|
||||
| **Workflow logs** | Workflow execution records (one row per execution, only after the run reaches a terminal state). |
|
||||
| **Job logs** | Background job records (deployed APIs, schedules, webhooks). Only terminal-state rows are exported. |
|
||||
| **Audit logs** | Organization- and workspace-scoped audit events — logins, permission changes, resource creation/deletion, drain configuration changes. |
|
||||
| **Copilot chats** | Mothership chat history. |
|
||||
| **Copilot runs** | Mothership run records (terminal state only). |
|
||||
| **Chats** | Chat history. |
|
||||
| **Chat runs** | Chat run records (terminal state only). |
|
||||
|
||||
Each row is delivered as a single line of NDJSON. The shape of each row is part of the public schema and stable across versions; every row carries an `id` field that downstream consumers can use to dedupe.
|
||||
|
||||
Drains export each row exactly once based on its creation cursor. Mutable fields on **Copilot chats** (messages, title, `lastSeenAt`) are a point-in-time snapshot and won't be re-emitted if the chat is later updated. Treat the export as append-only and reconstitute current state from your own system of record if you need it.
|
||||
Drains export each row exactly once based on its creation cursor. Mutable fields on **Chats** (messages, title, `lastSeenAt`) are a point-in-time snapshot and won't be re-emitted if the chat is later updated. Treat the export as append-only and reconstitute current state from your own system of record if you need it.
|
||||
|
||||
---
|
||||
|
||||
@@ -193,7 +193,7 @@ To safely use both together, set the drain cadence shorter than the retention pe
|
||||
| Drain source | Pairs with retention setting |
|
||||
|---|---|
|
||||
| Workflow logs, Job logs | **Log retention** |
|
||||
| Copilot chats, Copilot runs | **Task cleanup** |
|
||||
| Chats, Chat runs | **Task cleanup** |
|
||||
| Audit logs | *(no retention setting today — audit logs are kept indefinitely)* |
|
||||
|
||||
For example, with **Log retention** set to 30 days, set the workflow-logs drain to **Hourly** or **Daily** so every row is exported well before retention purges it from Sim. Monitor recent drain runs in the settings page; if a drain has been failing for longer than your retention window, you may lose rows that retention purges before they are exported.
|
||||
|
||||
@@ -55,13 +55,13 @@ Track configuration and security-relevant actions across your organization for c
|
||||
|
||||
## Data Retention
|
||||
|
||||
Configure how long execution logs, soft-deleted resources, and Mothership data are kept before permanent deletion. See the [data retention guide](/platform/enterprise/data-retention).
|
||||
Configure how long execution logs, soft-deleted resources, and Chat data are kept before permanent deletion. See the [data retention guide](/platform/enterprise/data-retention).
|
||||
|
||||
---
|
||||
|
||||
## Data Drains
|
||||
|
||||
Continuously export workflow logs, audit logs, and Mothership data to a customer-owned S3 bucket or HTTPS webhook on a schedule. See the [data drains guide](/platform/enterprise/data-drains).
|
||||
Continuously export workflow logs, audit logs, and Chat data to a customer-owned S3 bucket or HTTPS webhook on a schedule. See the [data drains guide](/platform/enterprise/data-drains).
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"title": "Platform",
|
||||
"pages": ["workspaces", "organization", "permissions", "credentials", "costs"]
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Organizing a workspace
|
||||
description: Folders, colors, and naming conventions for keeping a growing workspace understandable.
|
||||
pageType: concept
|
||||
---
|
||||
|
||||
import { Card, Cards } from 'fumadocs-ui/components/card'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Roles and permissions
|
||||
description: How organization, workspace, and credential roles work together — and how they inherit.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Workspace fundamentals
|
||||
description: A workspace holds your workflows and resources and decides who can access them.
|
||||
pageType: concept
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Overview
|
||||
description: A grid of typed columns and rows in your workspace, for data your workflows read and write.
|
||||
pageType: concept
|
||||
---
|
||||
|
||||
import { Image } from '@/components/ui/image'
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"title": "Tables",
|
||||
"pages": ["index", "using-in-workflows", "workflow-columns"]
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Using tables in workflows
|
||||
description: How a workflow reads, writes, and updates table rows with the Table block.
|
||||
pageType: guide
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Workflow columns
|
||||
description: A column backed by a workflow that runs once per row, reading chosen columns as inputs and writing its results back into result columns.
|
||||
pageType: concept
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Agent
|
||||
description: The Agent block runs a model over your inputs to reason, call tools, and return text or structured output.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { BlockPreview, WorkflowPreview, CLASSIFY_WORKFLOW } from '@/components/workflow-preview'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: API
|
||||
description: The API block makes an HTTP request to an external service and returns the response.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Condition
|
||||
description: The Condition block branches a workflow on boolean expressions, with no model call.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Credential
|
||||
description: The Credential block outputs an OAuth credential's ID reference for downstream blocks to use.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Evaluator
|
||||
description: The Evaluator block uses a model to score content against metrics you define.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Function
|
||||
description: The Function block runs your JavaScript or Python code as a step and returns what it produces.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Guardrails
|
||||
description: The Guardrails block checks content against a validation type before it moves through the workflow.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Human in the Loop
|
||||
description: The Human in the Loop block pauses a run for human approval, then resumes with their input.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Loop
|
||||
description: The Loop block is a container that runs the blocks inside it repeatedly — over a collection, a count, or while a condition holds.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Parallel
|
||||
description: The Parallel block is a container that runs the block inside it concurrently — once per item or a fixed number of times.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Pi Coding Agent
|
||||
description: The Pi Coding Agent block runs an autonomous coding agent on a real repository — creating or updating a pull request, reviewing a PR, or editing files over SSH.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Response
|
||||
description: The Response block ends an API-triggered workflow and returns a structured HTTP response.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Router
|
||||
description: The Router block uses a model to pick one of several paths based on the content it reads.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Variables
|
||||
description: The Variables block updates workflow variables during a run, read from any block by name.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Wait
|
||||
description: The Wait block pauses a workflow for a set time before continuing.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Webhook
|
||||
description: The Webhook block sends an HTTP POST to an external endpoint, with automatic headers and optional signing.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Workflow Block
|
||||
description: Run another workflow inside the current flow
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Connections
|
||||
description: The syntax for referencing an earlier block's output and the shape of common block outputs.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: How blocks pass data
|
||||
description: What a block's output is, how blocks reference earlier outputs, and the data types you'll work with.
|
||||
pageType: concept
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Overview
|
||||
description: How a workflow becomes an operational system that outside callers can run, with versioned snapshots and rollback.
|
||||
pageType: concept
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: How workflows run
|
||||
description: How Sim orders the blocks, runs independent ones in parallel, and follows branches.
|
||||
pageType: concept
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Overview
|
||||
description: A workflow is a visual program made of blocks, a saved procedure your AI systems run.
|
||||
pageType: concept
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
@@ -84,9 +83,9 @@ When a workflow runs, blocks execute in dependency order: a block runs as soon a
|
||||
|
||||
A workflow is where the rest of the workspace becomes behavior. On their own, tables, knowledge bases, files, and integrations are just resources. Workflows are where they *do* something.
|
||||
|
||||
{/* VISUAL: system-context diagram. Mothership builds; tables/KBs/files/integrations feed; deployments expose; logs verify. */}
|
||||
{/* VISUAL: system-context diagram. Sim builds; tables/KBs/files/integrations feed; deployments expose; logs verify. */}
|
||||
|
||||
- **Mothership** builds and edits workflows in natural language.
|
||||
- **Sim** builds and edits workflows in natural language from Chat.
|
||||
- **Tables, knowledge bases, files, and integrations** feed data, memory, artifacts, and actions into a workflow.
|
||||
- **Deployments** expose a workflow as an API, chat, or MCP server.
|
||||
- **Logs** record every run so you can verify what happened, step by step.
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"title": "Workflows",
|
||||
"pages": [
|
||||
"index",
|
||||
"how-it-runs",
|
||||
"data-flow",
|
||||
"connections",
|
||||
"variables",
|
||||
"deployment",
|
||||
"triggers",
|
||||
"blocks"
|
||||
]
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: RSS Feed
|
||||
description: The RSS trigger runs a workflow when a new item is published to an RSS or Atom feed.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Schedule
|
||||
description: The Schedule trigger runs a workflow on a timer — a simple interval or a cron expression.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Start
|
||||
description: The Start block is the default trigger — it collects typed inputs and runs the workflow from the editor, an API call, or chat.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Table
|
||||
description: The Table trigger runs a workflow when a row is inserted or updated in a Sim table.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { BlockPreview } from '@/components/workflow-preview'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Webhook
|
||||
description: The Webhook trigger runs a workflow on any inbound HTTP request to a URL Sim generates.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Variables
|
||||
description: Define reusable workflow variables referenced with angle brackets and environment variables referenced with double curly braces.
|
||||
pageType: reference
|
||||
---
|
||||
|
||||
import { Callout } from 'fumadocs-ui/components/callout'
|
||||
|
||||
@@ -92,14 +92,10 @@ export const source = loader(
|
||||
}
|
||||
)
|
||||
|
||||
/** Diátaxis page type surfaced as a badge near the page title. */
|
||||
export type DocsPageType = 'tutorial' | 'guide' | 'reference' | 'concept'
|
||||
|
||||
/** Full page data type including MDX content and metadata */
|
||||
export type PageData = DocData &
|
||||
DocMethods & {
|
||||
title: string
|
||||
description?: string
|
||||
full?: boolean
|
||||
pageType?: DocsPageType
|
||||
}
|
||||
|
||||
@@ -26,8 +26,11 @@ const config: NextConfig = {
|
||||
// form deployment removed
|
||||
{ source: '/deployment/form', destination: '/workflows/deployment', permanent: true },
|
||||
// copilot deprecated and removed
|
||||
{ source: '/copilot', destination: '/mothership', permanent: true },
|
||||
{ source: '/copilot/:path*', destination: '/mothership', permanent: true },
|
||||
{ source: '/copilot', destination: '/chat', permanent: true },
|
||||
{ source: '/copilot/:path*', destination: '/chat', permanent: true },
|
||||
// mothership/* renamed to chat/* — the surface is "Chat", the agent is "Sim"
|
||||
{ source: '/mothership', destination: '/chat', permanent: true },
|
||||
{ source: '/mothership/:path*', destination: '/chat/:path*', permanent: true },
|
||||
// connections/* and variables/* collapsed into single pages under workflows/
|
||||
{ source: '/connections', destination: '/workflows/connections', permanent: true },
|
||||
{ source: '/connections/:path*', destination: '/workflows/connections', permanent: true },
|
||||
@@ -124,7 +127,7 @@ const config: NextConfig = {
|
||||
destination: '/workflows/deployment/:path*',
|
||||
permanent: true,
|
||||
},
|
||||
{ source: '/mailer', destination: '/mothership/mailer', permanent: true },
|
||||
{ source: '/mailer', destination: '/chat/mailer', permanent: true },
|
||||
{ source: '/credentials', destination: '/platform/credentials', permanent: true },
|
||||
{
|
||||
source: '/credentials/:path*',
|
||||
|
||||
@@ -1,18 +1,9 @@
|
||||
import { defineConfig, defineDocs, frontmatterSchema } from 'fumadocs-mdx/config'
|
||||
import { z } from 'zod'
|
||||
|
||||
/**
|
||||
* Diátaxis page type — an internal authoring taxonomy surfaced to readers as a
|
||||
* small badge near the page title. Optional so existing pages render unchanged
|
||||
* until backfilled. Only collections may be exported from this file, so the
|
||||
* shared type lives in `@/lib/source` (`DocsPageType`).
|
||||
*/
|
||||
export const docs = defineDocs({
|
||||
dir: 'content/docs',
|
||||
docs: {
|
||||
schema: frontmatterSchema.extend({
|
||||
pageType: z.enum(['tutorial', 'guide', 'reference', 'concept']).optional(),
|
||||
}),
|
||||
schema: frontmatterSchema,
|
||||
postprocess: {
|
||||
includeProcessedMarkdown: true,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user