Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions apps/docs/components/icons.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -1467,6 +1467,21 @@ export function LinkedInIcon(props: SVGProps<SVGSVGElement>) {
)
}

/** Instagram camera glyph rendered with the block's brand gradient background. */
export function InstagramIcon(props: SVGProps<SVGSVGElement>) {
return (
<svg
{...props}
viewBox='0 0 24 24'
fill='currentColor'
xmlns='http://www.w3.org/2000/svg'
aria-hidden='true'
>
<path d='M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z' />
</svg>
)
}
Comment thread
icecrasher321 marked this conversation as resolved.

export function CrunchbaseIcon(props: SVGProps<SVGSVGElement>) {
return (
<svg
Expand Down
10 changes: 10 additions & 0 deletions apps/sim/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,16 @@ API_ENCRYPTION_KEY=your_api_encryption_key # Use `openssl rand -hex 32` to gener
# S3_ENDPOINT= # Custom endpoint for S3-compatible storage (Cloudflare R2, MinIO, Backblaze B2). Leave unset for AWS S3
# S3_FORCE_PATH_STYLE=true # Required for MinIO/Ceph RGW. Leave unset for AWS S3 and R2

# Instagram OAuth (Optional - Instagram App ID/Secret from Meta App Dashboard > Instagram > API setup with Instagram login)
# INSTAGRAM_CLIENT_ID=
# INSTAGRAM_CLIENT_SECRET=
# Instagram publish file uploads require S3 or Azure Blob above (Meta must fetch a public HTTPS URL).
# Gmail attachments do not need this.

# TikTok OAuth (Optional - Client Key/Secret from the TikTok for Developers app)
# TIKTOK_CLIENT_ID=
# TIKTOK_CLIENT_SECRET=

# Azure Blob Storage takes precedence over S3 if both are configured
# AZURE_ACCOUNT_NAME= # Azure storage account name
# AZURE_ACCOUNT_KEY= # Azure storage account key
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import type { CareerPosting } from '@/lib/ashby/jobs'
import type { DepartmentGroup } from '@/app/(landing)/careers/components/job-board/utils'

/** Empty-state copy: distinguishes a truly empty board from a filtered-to-zero view. */
const NO_OPEN_ROLES_MESSAGE = 'No open roles right now — check back soon.'
const NO_OPEN_ROLES_MESSAGE = 'No open roles right now. Check back soon.'
const NO_MATCHING_ROLES_MESSAGE =
'No roles match these filters right now. Try clearing them, or check back soon.'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { ThinkingLoader } from '@/components/ui'

const PROMPT = 'Build a workflow to schedule and publish posts to my X account.'
const REPLY =
'On it — building a workflow with a schedule trigger, a drafting agent, and an X publish step.'
'On it. Building a workflow with a schedule trigger, a drafting agent, and an X publish step.'
const REPLY_WORDS = REPLY.split(' ')

const TYPE_START_MS = 900
Expand Down
6 changes: 3 additions & 3 deletions apps/sim/app/(landing)/components/features/features.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ export function Features() {
<FeatureCard
eyebrow='Context'
title='Give Sim data it can reason over.'
description='Sim stores your data semantically in tables, files, and knowledge bases your agents read from to ground every answer in your own data.'
description='Sim stores your data in tables, files, and knowledge bases, the semantic memory agents read to ground every answer.'
backdropSrc='/landing/feature-context-backdrop.jpg'
mediaSide='right'
>
Expand All @@ -65,7 +65,7 @@ export function Features() {
<FeatureCard
eyebrow='Build'
title='Build agents that solve real problems.'
description='Wire blocks, models, and integrations into agent logic on a visual builder, from one agent to many working in parallel.'
description="Wire blocks, models, and integrations into agent logic on Sim's visual builder, from one agent to many working in parallel."
href='/workflows'
linkLabel='Explore the workflow builder'
>
Expand All @@ -76,7 +76,7 @@ export function Features() {
<FeatureCard
eyebrow='Monitor'
title='Watch every run, end to end.'
description='Trace each run block by block, with full logs and the real cost, so you always know what ran and why.'
description='Sim traces each run block by block, with full logs and the real cost.'
backdropSrc='/landing/feature-monitor-backdrop.jpg'
mediaSide='right'
flushBottom
Expand Down
16 changes: 12 additions & 4 deletions apps/sim/app/(landing)/components/footer/footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,20 @@ interface FooterItem {
external?: boolean
}

/**
* Platform modules link to their local landing pages (internal link equity
* stays on the ranking pages); docs-only surfaces (MCP, API, Self Hosting)
* and Status remain external.
*/
const PRODUCT_LINKS: FooterItem[] = [
{ label: 'Enterprise', href: '/enterprise' },
{ label: 'Mothership', href: 'https://docs.sim.ai/mothership', external: true },
{ label: 'Workflows', href: 'https://docs.sim.ai', external: true },
{ label: 'Knowledge Base', href: 'https://docs.sim.ai/knowledgebase', external: true },
{ label: 'Tables', href: 'https://docs.sim.ai/tables', external: true },
{ label: 'Chat', href: 'https://docs.sim.ai/mothership', external: true },
{ label: 'Workflows', href: '/workflows' },
{ label: 'Knowledge Base', href: '/knowledge' },
{ label: 'Tables', href: '/tables' },
{ label: 'Files', href: '/files' },
{ label: 'Logs', href: '/logs' },
{ label: 'Scheduled Tasks', href: '/scheduled-tasks' },
{ label: 'MCP', href: 'https://docs.sim.ai/agents/mcp', external: true },
{ label: 'API', href: 'https://docs.sim.ai/api-reference/getting-started', external: true },
{ label: 'Self Hosting', href: 'https://docs.sim.ai/platform/self-hosting', external: true },
Expand Down
6 changes: 3 additions & 3 deletions apps/sim/app/(landing)/components/hero/hero.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,11 @@ export function Hero() {
headingId='hero-heading'
heading={
<>
Sim is your AI workspace <br />
for building agentic workflows.
Sim is the AI workspace <br />
for building AI agents.
</>
}
description='The open-source workspace where teams build, deploy, and manage AI agents.'
description='Open source, with 1,000+ integrations and every major LLM. Build, deploy, and manage agents visually, conversationally, or with code.'
/>

<div
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,14 @@ import { JsonLd } from '@/app/(landing)/components/json-ld'
* - All claims must also appear as visible text on the page.
* - Do not add `aggregateRating` without real, verifiable review data.
*/
/**
* The home page's canonical description - the single string shared by the
* `<meta name="description">`, OG/Twitter cards (`page.tsx`), and the JSON-LD
* `WebPage.description` below, so the three surfaces never drift.
*/
export const HOME_PAGE_DESCRIPTION =
'Sim is the open-source AI workspace where teams build, deploy, and manage AI agents across 1,000+ integrations and every major LLM, visually or with code.'

const HOME_JSON_LD = {
'@context': 'https://schema.org',
'@graph': [
Expand All @@ -27,8 +35,7 @@ const HOME_JSON_LD = {
isPartOf: { '@id': `${SITE_URL}#website` },
about: { '@id': `${SITE_URL}#software` },
datePublished: '2024-01-01T00:00:00+00:00',
description:
'Sim is the open-source AI workspace where teams build, deploy, and manage AI agents. Connect 1,000+ integrations and every major LLM to create agents that automate real work.',
description: HOME_PAGE_DESCRIPTION,
breadcrumb: { '@id': `${SITE_URL}#breadcrumb` },
inLanguage: 'en-US',
speakable: {
Expand Down Expand Up @@ -93,7 +100,7 @@ const HOME_JSON_LD = {
],
featureList: [
'AI workspace for teams',
'Mothership: natural language agent creation',
'Chat: build and manage agents in natural language',
'Visual workflow builder',
'1,000+ integrations',
'LLM orchestration (OpenAI, Anthropic, Google, xAI, Mistral, Perplexity)',
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export { HomeStructuredData } from './home-structured-data'
export { HOME_PAGE_DESCRIPTION, HomeStructuredData } from './home-structured-data'
6 changes: 3 additions & 3 deletions apps/sim/app/(landing)/components/mothership/mothership.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ const AREAS: Area[] = [
size: 180,
definition: (
<>
One catalog of 1,000+ integrations
Sim&apos;s catalog of 1,000+ integrations
<br />
your agents act through.
</>
Expand All @@ -55,7 +55,7 @@ const AREAS: Area[] = [
word: 'Context',
Mark: IsoIngestIllustration,
size: 170,
definition: 'Your data, stored semantically as the memory your agents reason over.',
definition: 'Your data, stored semantically in Sim as the memory your agents reason over.',
},
{
word: 'Build',
Expand All @@ -67,7 +67,7 @@ const AREAS: Area[] = [
word: 'Monitor',
Mark: IsoMonitorIllustration,
size: 174,
definition: 'See inside every run with live traces, logs, and real cost.',
definition: 'See inside every run in Sim: live traces, logs, and real cost.',
},
]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ export function ProductDemo() {
</h2>
<p className='mt-3 text-pretty text-[15px] text-[var(--text-muted)] leading-[1.6]'>
Tell Sim what you need in plain English and it wires blocks, models, and integrations
into a working agent, ready to run.
into a working agent.
</p>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ interface SolutionsStructuredDataProps {
}

export function SolutionsStructuredData({ config }: SolutionsStructuredDataProps) {
const { module, path, hero, rows } = config
const { module, path, seoDescription, offersFreeTier = true, hero, rows } = config
const url = `${SITE_URL}${path}`
const featureList = Array.from(
new Set(rows.flatMap((row) => row.cards.map((card) => card.title)))
Expand All @@ -36,7 +36,7 @@ export function SolutionsStructuredData({ config }: SolutionsStructuredDataProps
'@id': `${url}#webpage`,
url,
name: hero.heading,
description: hero.summary,
description: seoDescription ?? hero.summary,
isPartOf: { '@id': `${SITE_URL}#website` },
about: { '@id': `${url}#application` },
breadcrumb: { '@id': `${url}#breadcrumb` },
Expand All @@ -59,7 +59,9 @@ export function SolutionsStructuredData({ config }: SolutionsStructuredDataProps
operatingSystem: 'Web',
url,
featureList,
offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
...(offersFreeTier && {
offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
}),
},
],
}
Expand Down
12 changes: 12 additions & 0 deletions apps/sim/app/(landing)/components/solutions-page/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,18 @@ export interface SolutionsPageConfig {
module: string
/** Canonical path, e.g. "/workflows" - used to build the JSON-LD `url`/breadcrumb. */
path: string
/**
* The page's meta description, shared with `page.tsx` so the JSON-LD
* `WebPage.description` and the `<meta name="description">` never drift.
* Falls back to `hero.summary` when absent.
*/
seoDescription?: string
/**
* Whether the JSON-LD `WebApplication` advertises the free tier as an
* `Offer`. Defaults to true; sales-led pages (Enterprise) set false so a
* rich result never claims a $0 price for a quoted product.
*/
offersFreeTier?: boolean
/** The hero (the page's only `<h1>`). */
hero: SolutionsHeroConfig
/** Card rows rendered in order beneath the logos row. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ const CODE_TOTAL_CHARS = CODE_LINE_LENGTHS.reduce((total, length) => total + len

const PROMPT = 'Create a support agent that answers customer questions'
const REPLY =
'On it — scaffolding a support agent with Zendesk and Slack that answers customer questions.'
'On it. Scaffolding a support agent with Zendesk and Slack that answers customer questions.'
const REPLY_WORDS = REPLY.split(' ')

const CODE_START_MS = 500
Expand Down
42 changes: 27 additions & 15 deletions apps/sim/app/(landing)/enterprise/enterprise.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,25 @@ import {
* (each card), never skipped. Server Component; the interactive leaves live in
* the shared landing components.
*/
/**
* The enterprise page's canonical description - shared by `page.tsx` (the
* `<meta name="description">` and OG/Twitter cards) and the JSON-LD
* `WebPage.description` via {@link SolutionsPageConfig.seoDescription}.
*/
export const ENTERPRISE_SEO_DESCRIPTION =
'Sim is the AI workspace where teams build, deploy, and govern enterprise AI agents with SOC2, role-based access, audit trails, and 1,000+ integrations.'

const ENTERPRISE_CONFIG: SolutionsPageConfig = {
module: 'Enterprise',
path: '/enterprise',
seoDescription: ENTERPRISE_SEO_DESCRIPTION,
offersFreeTier: false,
hero: {
heading: 'The AI Agent Platform for Enterprise Teams',
description: 'Build, deploy, and govern enterprise AI agents in one workspace.',
heading: 'Sim is the AI workspace for enterprise AI agents.',
description:
'IT, operations, and technical teams build, deploy, and govern agents in Sim, with SOC2, role-based access, approvals, and full audit trails.',
summary:
'Sim is the open-source enterprise AI agent platform where IT, operations, and technical teams build, deploy, and govern enterprise AI agents in one AI workspace. Connect 1,000+ integrations and every major LLM, with security, role-based access, approvals, observability, versioning, and audit trails for reliable deployment across teams.',
'Sim is the open-source AI workspace where IT, operations, and technical teams build, deploy, and govern enterprise AI agents. Connect 1,000+ integrations and every major LLM, with role-based access, approvals, versioning, and full audit trails.',
/**
* The shared {@link PlatformHeroVisual} backdrop-plus-demo-window
* composition, filled by the {@link EnterprisePlatformLoop} - a sibling of
Expand All @@ -69,14 +80,14 @@ const ENTERPRISE_CONFIG: SolutionsPageConfig = {
rows: [
{
id: 'build',
title: 'Build, Deploy, and Manage Enterprise AI Agents in One Workspace',
title: 'Build, Deploy, and Manage AI Agents in One Workspace',
subtitle:
'Build enterprise AI agents, ship to production, and manage every version from one workspace.',
'Sim carries agents from first draft to production, with versioning and monitoring built in.',
cta: { label: 'Start building', href: SIGNUP_HREF },
cards: [
{
title: 'Build visually or with code',
description: 'Create agents in the visual builder, through chat, or directly in code.',
description: "Create agents in Sim's visual builder, through chat, or directly in code.",
visual: <BuildMethodsGraphic />,
},
{
Expand All @@ -89,7 +100,7 @@ const ENTERPRISE_CONFIG: SolutionsPageConfig = {
},
{
title: 'Manage the full lifecycle',
description: 'Version, monitor, and edit every agent as your workflows evolve.',
description: 'Version, monitor, and edit every agent in Sim as your workflows evolve.',
visual: <LifecycleGraphic />,
},
],
Expand All @@ -98,7 +109,7 @@ const ENTERPRISE_CONFIG: SolutionsPageConfig = {
id: 'governance',
title: 'Governance and Security for Enterprise AI Agents',
subtitle:
'Security, approvals, and controls keep enterprise AI agents trusted in production.',
'Sim gives security teams role-based access, approval paths, and a complete audit trail for every deployment.',
cta: { label: 'See security', href: DEMO_HREF },
cards: [
{
Expand All @@ -109,13 +120,13 @@ const ENTERPRISE_CONFIG: SolutionsPageConfig = {
},
{
title: 'Prove every action',
description: 'Trace every run block by block with a complete audit trail.',
description: 'Sim traces every run block by block with a complete audit trail.',
visual: <AuditTrailGraphic />,
},
{
title: 'Meet enterprise standards',
description:
'SOC2 compliance and open source give security teams a clear path to review.',
'Sim is SOC2 compliant and open source, giving security teams a clear path to review.',
visual: <StandardsGraphic />,
featureTileTone: 'dark',
featureTileDescriptionTone: 'soft',
Expand All @@ -125,7 +136,8 @@ const ENTERPRISE_CONFIG: SolutionsPageConfig = {
{
id: 'deploy',
title: 'Deploy Enterprise Workflow Agents with Confidence',
subtitle: 'Stage, observe, and version workflow agents before they reach production.',
subtitle:
'Test in staging, watch live runs, and roll back in seconds. Sim versions every deployment.',
cta: { label: 'Explore deployment', href: SIGNUP_HREF },
cards: [
{
Expand All @@ -135,12 +147,12 @@ const ENTERPRISE_CONFIG: SolutionsPageConfig = {
},
{
title: 'Watch every run',
description: 'See live logs, run history, and monitoring in one place.',
description: 'Sim shows live logs, run history, and monitoring in one place.',
visual: <RunMonitoringGraphic />,
},
{
title: 'Roll back safely',
description: 'Version workflows and roll back production agents in seconds.',
description: 'Sim versions workflows so you can roll back production agents in seconds.',
visual: <RollbackGraphic />,
},
],
Expand All @@ -149,7 +161,7 @@ const ENTERPRISE_CONFIG: SolutionsPageConfig = {
id: 'teams',
title: 'Built for Enterprise Teams',
subtitle:
'Built for the teams that own enterprise AI agents across IT, operations, and engineering.',
'IT, operations, and engineering teams share one Sim workspace, each with the controls their role needs.',
cta: { label: 'Talk to sales', href: DEMO_HREF },
cards: [
{
Expand All @@ -166,7 +178,7 @@ const ENTERPRISE_CONFIG: SolutionsPageConfig = {
},
{
title: 'Technical teams',
description: 'Let technical teams ship, review, and maintain agents together.',
description: 'Technical teams ship, review, and maintain agents together in Sim.',
visual: <TechnicalTeamsGraphic />,
},
],
Expand Down
8 changes: 3 additions & 5 deletions apps/sim/app/(landing)/enterprise/page.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
import { buildLandingMetadata } from '@/lib/landing/seo'
import EnterprisePage from '@/app/(landing)/enterprise/enterprise'
import EnterprisePage, { ENTERPRISE_SEO_DESCRIPTION } from '@/app/(landing)/enterprise/enterprise'

export const revalidate = 3600

const TITLE = 'Enterprise AI Agent Platform | Sim AI'
const DESCRIPTION =
'Build, deploy, and govern enterprise AI agents in one workspace with security, approvals, observability, and collaboration.'
const TITLE = 'Enterprise AI Agent Platform | Sim'

export const metadata = buildLandingMetadata({
title: TITLE,
description: DESCRIPTION,
description: ENTERPRISE_SEO_DESCRIPTION,
path: '/enterprise',
keywords:
'enterprise ai agents, enterprise ai agent, enterprise ai agent platform, enterprise workflow agents',
Expand Down
Loading
Loading