Skip to content

Commit a5ae48c

Browse files
authored
improvement(geo): clarify self-hosting and compliance for answer engines and agents (#9718)
* improvement(geo): clarify self-hosting and compliance for answer engines and agents * improvement(geo): check the credit note and the Ollama status command
1 parent 25d5929 commit a5ae48c

7 files changed

Lines changed: 60 additions & 3 deletions

File tree

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<p align="center">
99
<a href="https://deepwiki.com/simstudioai/sim" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/Ask-DeepWiki-E6E6E6?labelColor=C3C3C3&color=E6E6E6" alt="Ask DeepWiki"></a>
10-
<a href="https://cursor.com/link/prompt?text=Help%20me%20set%20up%20Sim%20locally.%20Follow%20these%20steps%3A%0A%0A1.%20First%2C%20verify%20Docker%20is%20installed%20and%20running%3A%0A%20%20%20docker%20--version%0A%20%20%20docker%20info%0A%0A2.%20Clone%20the%20repository%3A%0A%20%20%20git%20clone%20https%3A%2F%2Fgithub.com%2Fsimstudioai%2Fsim.git%0A%20%20%20cd%20sim%0A%0A3.%20Generate%20required%20secrets%20%28the%20stack%20will%20not%20start%20without%20them%29%3A%0A%20%20%20cat%20%3E%20.env%20%3C%3C%20EOF%0A%20%20%20BETTER_AUTH_SECRET%3D%24%28openssl%20rand%20-hex%2032%29%0A%20%20%20ENCRYPTION_KEY%3D%24%28openssl%20rand%20-hex%2032%29%0A%20%20%20INTERNAL_API_SECRET%3D%24%28openssl%20rand%20-hex%2032%29%0A%20%20%20CRON_SECRET%3D%24%28openssl%20rand%20-hex%2032%29%0A%20%20%20POSTGRES_PASSWORD%3D%24%28openssl%20rand%20-hex%2024%29%0A%20%20%20EOF%0A%0A4.%20Start%20the%20services%20with%20Docker%20Compose%3A%0A%20%20%20docker%20compose%20-f%20docker-compose.prod.yml%20up%20-d%0A%0A4.%20Wait%20for%20all%20containers%20to%20be%20healthy%20(this%20may%20take%201-2%20minutes)%3A%0A%20%20%20docker%20compose%20-f%20docker-compose.prod.yml%20ps%0A%0A5.%20Verify%20the%20app%20is%20accessible%20at%20http%3A%2F%2Flocalhost%3A3000%0A%0AIf%20there%20are%20any%20errors%2C%20help%20me%20troubleshoot%20them.%20Common%20issues%3A%0A-%20Port%203000%20or%203002%20already%20in%20use%0A-%20Docker%20not%20running%0A-%20Insufficient%20memory%20(needs%2012GB%2B%20RAM)%0A%0AFor%20local%20AI%20models%20with%20Ollama%2C%20use%20this%20instead%20of%20step%203%3A%0A%20%20%20docker%20compose%20-f%20docker-compose.ollama.yml%20--profile%20setup%20up%20-d"><img src="https://img.shields.io/badge/Set%20Up%20with-Cursor-E6E6E6?logo=cursor&logoColor=1A1A1A&labelColor=C3C3C3&color=E6E6E6" alt="Set Up with Cursor"></a>
10+
<a href="https://cursor.com/link/prompt?text=Help%20me%20set%20up%20Sim%20locally.%20Follow%20these%20steps%3A%0A%0A1.%20First%2C%20verify%20Docker%20is%20installed%20and%20running%3A%0A%20%20%20docker%20--version%0A%20%20%20docker%20info%0A%0A2.%20Clone%20the%20repository%3A%0A%20%20%20git%20clone%20https%3A%2F%2Fgithub.com%2Fsimstudioai%2Fsim.git%0A%20%20%20cd%20sim%0A%0A3.%20Generate%20required%20secrets%20%28the%20stack%20will%20not%20start%20without%20them%29%3A%0A%20%20%20cat%20%3E%20.env%20%3C%3C%20EOF%0A%20%20%20BETTER_AUTH_SECRET%3D%24%28openssl%20rand%20-hex%2032%29%0A%20%20%20ENCRYPTION_KEY%3D%24%28openssl%20rand%20-hex%2032%29%0A%20%20%20INTERNAL_API_SECRET%3D%24%28openssl%20rand%20-hex%2032%29%0A%20%20%20CRON_SECRET%3D%24%28openssl%20rand%20-hex%2032%29%0A%20%20%20POSTGRES_PASSWORD%3D%24%28openssl%20rand%20-hex%2024%29%0A%20%20%20EOF%0A%0A4.%20Start%20the%20services%20with%20Docker%20Compose%3A%0A%20%20%20docker%20compose%20-f%20docker-compose.prod.yml%20up%20-d%0A%0A5.%20Wait%20for%20all%20containers%20to%20be%20healthy%20%28this%20may%20take%201-2%20minutes%29%3A%0A%20%20%20docker%20compose%20-f%20docker-compose.prod.yml%20ps%0A%0A6.%20Verify%20the%20app%20is%20accessible%20at%20http%3A%2F%2Flocalhost%3A3000%0A%0AIf%20there%20are%20any%20errors%2C%20help%20me%20troubleshoot%20them.%20Common%20issues%3A%0A-%20Port%203000%20or%203002%20already%20in%20use%0A-%20Docker%20not%20running%0A-%20Insufficient%20memory%20%28needs%2012GB%2B%20RAM%29%0A%0AFor%20local%20AI%20models%20with%20Ollama%2C%20use%20one%20of%20these%20instead%20of%20step%204%3A%0A%20%20%20docker%20compose%20-f%20docker-compose.ollama.yml%20--profile%20gpu%20--profile%20setup%20up%20-d%0A%20%20%20docker%20compose%20-f%20docker-compose.ollama.yml%20--profile%20cpu%20--profile%20setup%20up%20-d%0AThen%20check%20status%20in%20step%205%20with%3A%0A%20%20%20docker%20compose%20-f%20docker-compose.ollama.yml%20ps"><img src="https://img.shields.io/badge/Set%20Up%20with-Cursor-E6E6E6?logo=cursor&logoColor=1A1A1A&labelColor=C3C3C3&color=E6E6E6" alt="Set Up with Cursor"></a>
1111
</p>
1212

1313
<p align="center">

‎apps/docs/content/docs/introduction/index.mdx‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,15 @@ For tools outside the catalog, connect an [external MCP server](/agents/mcp) or
5555

5656
The core source is available on [GitHub](https://github.com/simstudioai/sim) under the Apache 2.0 license. Enterprise features use a separate license that requires an active Enterprise subscription for production use. See [self-hosting](/platform/self-hosting) for installation requirements and configuration.
5757

58+
## Security and compliance
59+
60+
Sim is SOC 2 Type II compliant. Find reports and security details in the [trust center](https://trust.sim.ai/).
61+
5862
## Related docs
5963

6064
- [Getting started](/getting-started): Build and run a simple summarizer.
6165
- [Chat](/chat): Build and manage workspace resources conversationally.
6266
- [Workflows](/workflows): Blocks, connections, triggers, and execution.
6367
- [Quick reference](/quick-reference): Look up builder actions.
68+
- [Pricing](https://www.sim.ai/pricing): Compare Sim Cloud plans.
69+
- [Comparisons](https://www.sim.ai/comparisons): Sim vs Microsoft Copilot Studio, n8n, Zapier, Make, Dust, and other AI agent platforms.

‎apps/sim/app/(landing)/pricing/pricing.tsx‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { INTEGRATION_COUNT_LABEL } from '@sim/deployment-config/integration-claims'
2+
import { CREDITS_PER_DOLLAR } from '@/lib/billing/constants'
23
import { PricingPlans } from '@/app/(landing)/pricing/components/pricing-plans'
34
import { PricingStructuredData } from '@/app/(landing)/pricing/components/pricing-structured-data'
45

@@ -54,6 +55,19 @@ export default function Pricing() {
5455
className='mx-auto flex w-full max-w-[1728px] flex-col gap-7 px-10 pt-8 max-md:px-7 max-lg:px-8 max-xl:px-9'
5556
>
5657
<PricingPlans heading={PRICING_HEADING} />
58+
<p className='mx-auto max-w-[720px] text-balance text-center text-[var(--text-body)] text-small'>
59+
Sim is open source under the Apache 2.0 license, so you can self-host it for free with
60+
Docker Compose or Kubernetes. Enterprise features need a license.{' '}
61+
<a
62+
href='https://docs.sim.ai/platform/self-hosting'
63+
target='_blank'
64+
rel='noopener noreferrer'
65+
className='underline underline-offset-2'
66+
>
67+
Read the self-hosting guide
68+
</a>
69+
. On Sim Cloud, one credit is worth ${1 / CREDITS_PER_DOLLAR}.
70+
</p>
5771
</section>
5872
</main>
5973
)

‎apps/sim/app/workspace/[workspaceId]/upgrade/components/comparison-table/comparison-data.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ export const COMPARISON_SECTIONS: ComparisonSection[] = [
209209
values: [false, false, false, true],
210210
},
211211
{
212-
label: 'Self Hosting',
212+
label: 'Self-Hosted Enterprise Features',
213213
values: [false, false, false, true],
214214
},
215215
{

‎apps/sim/lib/compare/data/sim.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ export const simProfile: CompetitorProfile = {
181181
value:
182182
'Cloud-hosted (managed, multi-tenant SaaS) or self-hosted (Docker/Kubernetes). No documented managed single-tenant/VPC hosting tier in between',
183183
detail:
184-
'The Enterprise plan\'s only hosting-related row in the pricing comparison table is a boolean "Self Hosting" flag; there is no dedicated-instance/VPC offering.',
184+
'The Enterprise plan\'s only hosting-related row in the pricing comparison table is a boolean "Self-Hosted Enterprise Features" flag; there is no dedicated-instance/VPC offering.',
185185
shortValue: 'Cloud-hosted or self-hosted, no mid-tier VPC option',
186186
confidence: 'verified',
187187
sources: [

‎apps/sim/next.config.ts‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -643,6 +643,20 @@ const nextConfig: NextConfig = {
643643
}
644644
)
645645

646+
/** Readers and agents guess the product's full name; the page's slug is `microsoft-copilot`. */
647+
redirects.push(
648+
{
649+
source: '/comparisons/microsoft-copilot-studio',
650+
destination: '/comparisons/microsoft-copilot',
651+
permanent: true,
652+
},
653+
{
654+
source: '/comparisons/copilot-studio',
655+
destination: '/comparisons/microsoft-copilot',
656+
permanent: true,
657+
}
658+
)
659+
646660
/**
647661
* Stray crawler/artifact URLs picked up in an external SEO audit — no
648662
* page ever existed at these paths, but they were indexed or linked

‎apps/sim/scripts/test-landing-seo-e2e.ts‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,29 @@ async function run() {
422422
assert(String(product['@id']).endsWith('#software'), `Offers sit on ${product['@id']}`)
423423
})
424424

425+
await check('pricing says self-hosting the open-source core is free', async () => {
426+
const { body } = await get('/pricing')
427+
const visibleText = decodeHtml(
428+
body
429+
.replace(/<script\b[\s\S]*?<\/script>/g, '')
430+
.replace(/<!--[\s\S]*?-->/g, '')
431+
.replace(/<[^>]+>/g, '')
432+
)
433+
assert(visibleText.includes('open source under the Apache 2.0 license'), 'license note missing')
434+
assert(visibleText.includes('self-host it for free'), 'self-hosting note missing')
435+
assert(visibleText.includes('Self-Hosted Enterprise Features'), 'Enterprise row label missing')
436+
assert(visibleText.includes('one credit is worth $0.005'), 'credit value note missing')
437+
})
438+
439+
await check('Copilot Studio comparison aliases reach the comparison page', async () => {
440+
for (const alias of ['microsoft-copilot-studio', 'copilot-studio']) {
441+
const { status, location } = await get(`/comparisons/${alias}`)
442+
assert.equal(status, 308, alias)
443+
assert(location, `${alias}: expected a redirect`)
444+
assert.equal(new URL(location, baseUrl).pathname, '/comparisons/microsoft-copilot', alias)
445+
}
446+
})
447+
425448
await check('comparison pages lead with their answer and their tracked-prompt FAQs', async () => {
426449
const failures: string[] = []
427450
for (const profile of [

0 commit comments

Comments
 (0)