{section.title}
+-
+
{i18n.t("email.subtitle")}
+{inviteUrl()}
+
+ {i18n.t("workspace.referral.overview.subtitle")}
+{i18n.t("workspace.referral.rewards.description")}
+| {i18n.t("workspace.referral.table.reward")} | +{i18n.t("workspace.referral.table.referral")} | +{i18n.t("workspace.referral.table.date")} | ++ |
|---|---|---|---|
| {formatCurrency(reward.amount)} | ++ {i18n.t(rewardDescriptionKey(reward.source), { email: reward.email ?? "" })} + | ++ {earnedAt()} + | ++ + | +
+ {i18n.t("workspace.referral.apply.confirmBody", { + amount: formatCurrency(selected()?.amount ?? 0), + })} +
+([^<]+)<\/p>/)
+ const imgMatch = content.match(/ {p.prompt} {task()!.summary}
+ {judge.rationale}
+ {i18n.t("black.hero.subtitle")} {
+ if (videoMatch) return { type: "video", src: videoMatch[1] } satisfies HighlightMedia
+ if (imgMatch) {
+ return {
+ type: "image",
+ src: imgMatch[3],
+ width: imgMatch[1],
+ height: imgMatch[2],
+ } satisfies HighlightMedia
+ }
+ })()
+
+ if (!titleMatch || !media) continue
+
+ const item: HighlightItem = {
+ title: titleMatch[1],
+ description: pMatch?.[2] || "",
+ shortDescription: pMatch?.[1],
+ media,
+ }
+
+ if (!groups.has(source)) groups.set(source, [])
+ groups.get(source)!.push(item)
+ }
+
+ return Array.from(groups.entries()).map(([source, items]) => ({ source, items }))
+}
+
+function parseMarkdown(body: string) {
+ const lines = body.split("\n")
+ const sections: { title: string; items: string[] }[] = []
+ let current: { title: string; items: string[] } | null = null
+ let skip = false
+
+ for (const line of lines) {
+ if (line.startsWith("## ")) {
+ if (current) sections.push(current)
+ current = { title: line.slice(3).trim(), items: [] }
+ skip = false
+ continue
+ }
+
+ if (line.startsWith("**Thank you")) {
+ skip = true
+ continue
+ }
+
+ if (line.startsWith("- ") && !skip) current?.items.push(line.slice(2).trim())
+ }
+
+ if (current) sections.push(current)
+ return { sections, highlights: parseHighlights(body) }
+}
diff --git a/packages/console/app/src/lib/form-error.ts b/packages/console/app/src/lib/form-error.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d643a98f14b0fb5c8d06d4f9df76f9067af6accc
--- /dev/null
+++ b/packages/console/app/src/lib/form-error.ts
@@ -0,0 +1,86 @@
+import type { Key } from "~/i18n"
+
+export const formError = {
+ invalidPlan: "error.invalidPlan",
+ workspaceRequired: "error.workspaceRequired",
+ alreadySubscribed: "error.alreadySubscribed",
+ limitRequired: "error.limitRequired",
+ monthlyLimitInvalid: "error.monthlyLimitInvalid",
+ workspaceNameRequired: "error.workspaceNameRequired",
+ nameTooLong: "error.nameTooLong",
+ emailRequired: "error.emailRequired",
+ roleRequired: "error.roleRequired",
+ idRequired: "error.idRequired",
+ nameRequired: "error.nameRequired",
+ providerRequired: "error.providerRequired",
+ apiKeyRequired: "error.apiKeyRequired",
+ modelRequired: "error.modelRequired",
+} as const
+
+const map = {
+ [formError.invalidPlan]: "error.invalidPlan",
+ [formError.workspaceRequired]: "error.workspaceRequired",
+ [formError.alreadySubscribed]: "error.alreadySubscribed",
+ [formError.limitRequired]: "error.limitRequired",
+ [formError.monthlyLimitInvalid]: "error.monthlyLimitInvalid",
+ [formError.workspaceNameRequired]: "error.workspaceNameRequired",
+ [formError.nameTooLong]: "error.nameTooLong",
+ [formError.emailRequired]: "error.emailRequired",
+ [formError.roleRequired]: "error.roleRequired",
+ [formError.idRequired]: "error.idRequired",
+ [formError.nameRequired]: "error.nameRequired",
+ [formError.providerRequired]: "error.providerRequired",
+ [formError.apiKeyRequired]: "error.apiKeyRequired",
+ [formError.modelRequired]: "error.modelRequired",
+ "Invalid plan": "error.invalidPlan",
+ "Workspace ID is required": "error.workspaceRequired",
+ "Workspace ID is required.": "error.workspaceRequired",
+ "This workspace already has a subscription": "error.alreadySubscribed",
+ "Limit is required.": "error.limitRequired",
+ "Set a valid monthly limit": "error.monthlyLimitInvalid",
+ "Set a valid monthly limit.": "error.monthlyLimitInvalid",
+ "Workspace name is required.": "error.workspaceNameRequired",
+ "Name must be 255 characters or less.": "error.nameTooLong",
+ "Email is required": "error.emailRequired",
+ "Role is required": "error.roleRequired",
+ "ID is required": "error.idRequired",
+ "Name is required": "error.nameRequired",
+ "Provider is required": "error.providerRequired",
+ "API key is required": "error.apiKeyRequired",
+ "Model is required": "error.modelRequired",
+ "workspace.reload.error.paymentFailed": "workspace.reload.error.paymentFailed",
+ "Payment failed": "workspace.reload.error.paymentFailed",
+ "Payment failed.": "workspace.reload.error.paymentFailed",
+} as const satisfies Record
+
+
+
{i18n.t("notFound.heading")}
+
+--
+${body.name}
+${body.role}
+${body.company ? `${body.company}
` : ""}${body.email}
+${body.phone ? `${body.phone}
` : ""}`.trim()
+
+ const [lead, mail, octopus] = await Promise.all([
+ createLead({
+ name: body.name,
+ role: body.role,
+ company: body.company,
+ email: body.email,
+ phone: body.phone,
+ message: body.message,
+ }).catch((err) => {
+ console.error("Failed to create Salesforce lead:", err)
+ return false
+ }),
+ AWS.sendEmail({
+ to: Resource.ENTERPRISE_SALES_INBOX_EMAIL.value,
+ subject: `Enterprise Inquiry from ${body.name}`,
+ body: emailContent,
+ replyTo: body.email,
+ }).then(
+ () => true,
+ (err) => {
+ console.error("Failed to send enterprise email:", err)
+ return false
+ },
+ ),
+ subscribe(body.email, body.name),
+ ])
+
+ if (!lead && !mail && !octopus) {
+ if (import.meta.env.DEV) {
+ console.warn("Enterprise inquiry accepted in dev mode without integrations", { email: body.email })
+ return Response.json({ success: true, message: dict["enterprise.form.success.submitted"] }, { status: 200 })
+ }
+ console.error("Enterprise inquiry delivery failed", { email: body.email })
+ return Response.json({ error: dict["enterprise.form.error.internalServer"] }, { status: 500 })
+ }
+
+ return Response.json({ success: true, message: dict["enterprise.form.success.submitted"] }, { status: 200 })
+ } catch (error) {
+ console.error("Error processing enterprise form:", error)
+ return Response.json({ error: dict["enterprise.form.error.internalServer"] }, { status: 500 })
+ }
+}
diff --git a/packages/console/app/src/routes/api/support/actions/block-workspaces.ts b/packages/console/app/src/routes/api/support/actions/block-workspaces.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9f1fc0e9a3eb1e03b4a439848e0d3fcfd5eb80fb
--- /dev/null
+++ b/packages/console/app/src/routes/api/support/actions/block-workspaces.ts
@@ -0,0 +1,22 @@
+import type { APIEvent } from "@solidjs/start/server"
+import { Workspace } from "@opencode-ai/console-core/workspace.js"
+import { safeEqual } from "@opencode-ai/console-core/util/crypto.js"
+import { Resource } from "@opencode-ai/console-resource"
+import z from "zod"
+
+const Body = z.object({ workspaceIDs: z.array(z.string().startsWith("wrk_")).min(1) })
+
+export async function POST(event: APIEvent) {
+ if (!safeEqual(event.request.headers.get("authorization") ?? "", `Bearer ${Resource.SUPPORT_API_KEY.value}`)) {
+ return Response.json({ error: "Unauthorized" }, { status: 401 })
+ }
+
+ const body = Body.safeParse(await event.request.json().catch(() => undefined))
+ if (!body.success) {
+ return Response.json({ error: "Invalid request", issues: body.error.issues }, { status: 400 })
+ }
+ // Missing IDs do not fail the batch; they are reported per item in the result.
+ return Workspace.blockBatch(body.data)
+ .then((result) => Response.json({ success: true, message: "Workspaces blocked", result }))
+ .catch((error) => Response.json({ error: error instanceof Error ? error.message : String(error) }, { status: 400 }))
+}
diff --git a/packages/console/app/src/routes/api/support/actions/create-referral.ts b/packages/console/app/src/routes/api/support/actions/create-referral.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ac4d107bee10e540ec0850002a6bb47c2e5cbf26
--- /dev/null
+++ b/packages/console/app/src/routes/api/support/actions/create-referral.ts
@@ -0,0 +1,24 @@
+import type { APIEvent } from "@solidjs/start/server"
+import { Referral } from "@opencode-ai/console-core/referral.js"
+import { safeEqual } from "@opencode-ai/console-core/util/crypto.js"
+import { Resource } from "@opencode-ai/console-resource"
+import z from "zod"
+
+const Body = z.object({
+ inviterWorkspaceID: z.string().startsWith("wrk_"),
+ inviteeWorkspaceID: z.string().startsWith("wrk_"),
+})
+
+export async function POST(event: APIEvent) {
+ if (!safeEqual(event.request.headers.get("authorization") ?? "", `Bearer ${Resource.SUPPORT_API_KEY.value}`)) {
+ return Response.json({ error: "Unauthorized" }, { status: 401 })
+ }
+
+ const body = Body.safeParse(await event.request.json().catch(() => undefined))
+ if (!body.success) {
+ return Response.json({ error: "Invalid request", issues: body.error.issues }, { status: 400 })
+ }
+ return Referral.create(body.data)
+ .then((result) => Response.json({ success: true, message: "Referral created", result }))
+ .catch((error) => Response.json({ error: error instanceof Error ? error.message : String(error) }, { status: 400 }))
+}
diff --git a/packages/console/app/src/routes/api/support/actions/delete-account.ts b/packages/console/app/src/routes/api/support/actions/delete-account.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a713107df64dff7baadd272e0b51256d6f108cd1
--- /dev/null
+++ b/packages/console/app/src/routes/api/support/actions/delete-account.ts
@@ -0,0 +1,21 @@
+import type { APIEvent } from "@solidjs/start/server"
+import { Account } from "@opencode-ai/console-core/account.js"
+import { safeEqual } from "@opencode-ai/console-core/util/crypto.js"
+import { Resource } from "@opencode-ai/console-resource"
+import z from "zod"
+
+const Body = z.object({ email: z.email() })
+
+export async function DELETE(event: APIEvent) {
+ if (!safeEqual(event.request.headers.get("authorization") ?? "", `Bearer ${Resource.SUPPORT_API_KEY.value}`)) {
+ return Response.json({ error: "Unauthorized" }, { status: 401 })
+ }
+
+ const body = Body.safeParse(await event.request.json().catch(() => undefined))
+ if (!body.success) {
+ return Response.json({ error: "Invalid request", issues: body.error.issues }, { status: 400 })
+ }
+ return Account.remove(body.data.email)
+ .then(() => Response.json({ success: true, message: "Account deleted" }))
+ .catch((error) => Response.json({ error: error instanceof Error ? error.message : String(error) }, { status: 400 }))
+}
diff --git a/packages/console/app/src/routes/api/support/actions/reset-quota.ts b/packages/console/app/src/routes/api/support/actions/reset-quota.ts
new file mode 100644
index 0000000000000000000000000000000000000000..6f5c2812cfe017773eabd3bd5ec5abfd354cf2bb
--- /dev/null
+++ b/packages/console/app/src/routes/api/support/actions/reset-quota.ts
@@ -0,0 +1,24 @@
+import type { APIEvent } from "@solidjs/start/server"
+import { Quota } from "@opencode-ai/console-core/quota.js"
+import { safeEqual } from "@opencode-ai/console-core/util/crypto.js"
+import { Resource } from "@opencode-ai/console-resource"
+import z from "zod"
+
+const Body = z.object({
+ workspaceID: z.string().startsWith("wrk_"),
+ plan: z.enum(["lite", "subscription"]),
+})
+
+export async function POST(event: APIEvent) {
+ if (!safeEqual(event.request.headers.get("authorization") ?? "", `Bearer ${Resource.SUPPORT_API_KEY.value}`)) {
+ return Response.json({ error: "Unauthorized" }, { status: 401 })
+ }
+
+ const body = Body.safeParse(await event.request.json().catch(() => undefined))
+ if (!body.success) {
+ return Response.json({ error: "Invalid request", issues: body.error.issues }, { status: 400 })
+ }
+ return Quota.reset(body.data)
+ .then((result) => Response.json({ success: true, message: "Usage counters reset to zero", result }))
+ .catch((error) => Response.json({ error: error instanceof Error ? error.message : String(error) }, { status: 400 }))
+}
diff --git a/packages/console/app/src/routes/api/support/actions/unblock-workspace.ts b/packages/console/app/src/routes/api/support/actions/unblock-workspace.ts
new file mode 100644
index 0000000000000000000000000000000000000000..fd4baa07fda16b74967d21603e5e8972b74f150a
--- /dev/null
+++ b/packages/console/app/src/routes/api/support/actions/unblock-workspace.ts
@@ -0,0 +1,21 @@
+import type { APIEvent } from "@solidjs/start/server"
+import { Workspace } from "@opencode-ai/console-core/workspace.js"
+import { safeEqual } from "@opencode-ai/console-core/util/crypto.js"
+import { Resource } from "@opencode-ai/console-resource"
+import z from "zod"
+
+const Body = z.object({ workspaceID: z.string().startsWith("wrk_") })
+
+export async function POST(event: APIEvent) {
+ if (!safeEqual(event.request.headers.get("authorization") ?? "", `Bearer ${Resource.SUPPORT_API_KEY.value}`)) {
+ return Response.json({ error: "Unauthorized" }, { status: 401 })
+ }
+
+ const body = Body.safeParse(await event.request.json().catch(() => undefined))
+ if (!body.success) {
+ return Response.json({ error: "Invalid request", issues: body.error.issues }, { status: 400 })
+ }
+ return Workspace.unblock(body.data)
+ .then(() => Response.json({ success: true, message: "Workspace unblocked" }))
+ .catch((error) => Response.json({ error: error instanceof Error ? error.message : String(error) }, { status: 400 }))
+}
diff --git a/packages/console/app/src/routes/api/support/actions/unblock-workspaces.ts b/packages/console/app/src/routes/api/support/actions/unblock-workspaces.ts
new file mode 100644
index 0000000000000000000000000000000000000000..59ac1f354ebf8ea5bcc9a7038c29c4eb1cdf7b81
--- /dev/null
+++ b/packages/console/app/src/routes/api/support/actions/unblock-workspaces.ts
@@ -0,0 +1,22 @@
+import type { APIEvent } from "@solidjs/start/server"
+import { Workspace } from "@opencode-ai/console-core/workspace.js"
+import { safeEqual } from "@opencode-ai/console-core/util/crypto.js"
+import { Resource } from "@opencode-ai/console-resource"
+import z from "zod"
+
+const Body = z.object({ workspaceIDs: z.array(z.string().startsWith("wrk_")).min(1) })
+
+export async function POST(event: APIEvent) {
+ if (!safeEqual(event.request.headers.get("authorization") ?? "", `Bearer ${Resource.SUPPORT_API_KEY.value}`)) {
+ return Response.json({ error: "Unauthorized" }, { status: 401 })
+ }
+
+ const body = Body.safeParse(await event.request.json().catch(() => undefined))
+ if (!body.success) {
+ return Response.json({ error: "Invalid request", issues: body.error.issues }, { status: 400 })
+ }
+ // Missing IDs do not fail the batch; they are reported per item in the result.
+ return Workspace.unblockBatch(body.data)
+ .then((result) => Response.json({ success: true, message: "Workspaces unblocked", result }))
+ .catch((error) => Response.json({ error: error instanceof Error ? error.message : String(error) }, { status: 400 }))
+}
diff --git a/packages/console/app/src/routes/auth/[...callback].ts b/packages/console/app/src/routes/auth/[...callback].ts
new file mode 100644
index 0000000000000000000000000000000000000000..00bb89406fc8787c011eb35bf3c414b796fbf8ff
--- /dev/null
+++ b/packages/console/app/src/routes/auth/[...callback].ts
@@ -0,0 +1,46 @@
+import { redirect } from "@solidjs/router"
+import type { APIEvent } from "@solidjs/start/server"
+import { AuthClient } from "~/context/auth"
+import { useAuthSession } from "~/context/auth"
+import { i18n } from "~/i18n"
+import { localeFromRequest, route } from "~/lib/language"
+
+export async function GET(input: APIEvent) {
+ const url = new URL(input.request.url)
+ const locale = localeFromRequest(input.request)
+ const dict = i18n(locale)
+
+ try {
+ const code = url.searchParams.get("code")
+ if (!code) throw new Error(dict["auth.callback.error.codeMissing"])
+ const result = await AuthClient.exchange(code, `${url.origin}${url.pathname}`)
+ if (result.err) throw new Error(result.err.message)
+ const decoded = AuthClient.decode(result.tokens.access, {} as any)
+ if (decoded.err) throw new Error(decoded.err.message)
+ const session = await useAuthSession()
+ const id = decoded.subject.properties.accountID
+ await session.update((value) => {
+ return {
+ ...value,
+ account: {
+ ...value.account,
+ [id]: {
+ id,
+ email: decoded.subject.properties.email,
+ },
+ },
+ current: id,
+ }
+ })
+ const next = url.pathname === "/auth/callback" ? "/auth" : url.pathname.replace("/auth/callback", "")
+ return redirect(route(locale, next))
+ } catch (e: any) {
+ return new Response(
+ JSON.stringify({
+ error: e.message,
+ cause: Object.fromEntries(url.searchParams.entries()),
+ }),
+ { status: 500 },
+ )
+ }
+}
diff --git a/packages/console/app/src/routes/auth/authorize.ts b/packages/console/app/src/routes/auth/authorize.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0f0651ae36b0309a0db86976aa87de8938406dfd
--- /dev/null
+++ b/packages/console/app/src/routes/auth/authorize.ts
@@ -0,0 +1,10 @@
+import type { APIEvent } from "@solidjs/start/server"
+import { AuthClient } from "~/context/auth"
+
+export async function GET(input: APIEvent) {
+ const url = new URL(input.request.url)
+ const cont = url.searchParams.get("continue") ?? ""
+ const callbackUrl = new URL(`./callback${cont}`, input.request.url)
+ const result = await AuthClient.authorize(callbackUrl.toString(), "code")
+ return Response.redirect(result.url, 302)
+}
diff --git a/packages/console/app/src/routes/auth/index.ts b/packages/console/app/src/routes/auth/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0fefb98933eaaecb5fbb7fb6185f743cdae235de
--- /dev/null
+++ b/packages/console/app/src/routes/auth/index.ts
@@ -0,0 +1,14 @@
+import { redirect } from "@solidjs/router"
+import type { APIEvent } from "@solidjs/start/server"
+import { getLastSeenWorkspaceID } from "../workspace/common"
+import { localeFromRequest, route } from "~/lib/language"
+
+export async function GET(input: APIEvent) {
+ const locale = localeFromRequest(input.request)
+ try {
+ const workspaceID = await getLastSeenWorkspaceID()
+ return redirect(route(locale, `/workspace/${workspaceID}`))
+ } catch {
+ return redirect("/auth/authorize")
+ }
+}
diff --git a/packages/console/app/src/routes/auth/logout.ts b/packages/console/app/src/routes/auth/logout.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9aaac37e224f3170aa48332e5b3e50223b9126c7
--- /dev/null
+++ b/packages/console/app/src/routes/auth/logout.ts
@@ -0,0 +1,17 @@
+import { redirect } from "@solidjs/router"
+import { APIEvent } from "@solidjs/start"
+import { useAuthSession } from "~/context/auth"
+
+export async function GET(event: APIEvent) {
+ const auth = await useAuthSession()
+ const current = auth.data.current
+ if (current)
+ await auth.update((val) => {
+ delete val.account?.[current]
+ const first = Object.keys(val.account ?? {})[0]
+ val.current = first
+ event!.locals.actor = undefined
+ return val
+ })
+ return redirect("/zen")
+}
diff --git a/packages/console/app/src/routes/auth/status.ts b/packages/console/app/src/routes/auth/status.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ed522d7404f26c5ec60c647297de812c3b8bf0b4
--- /dev/null
+++ b/packages/console/app/src/routes/auth/status.ts
@@ -0,0 +1,7 @@
+import { APIEvent } from "@solidjs/start"
+import { useAuthSession } from "~/context/auth"
+
+export async function GET(_input: APIEvent) {
+ const session = await useAuthSession()
+ return Response.json(session.data)
+}
diff --git a/packages/console/app/src/routes/bench/[id].tsx b/packages/console/app/src/routes/bench/[id].tsx
new file mode 100644
index 0000000000000000000000000000000000000000..c6d10826b3c6a16b4e5dd8033cd38665b57ad620
--- /dev/null
+++ b/packages/console/app/src/routes/bench/[id].tsx
@@ -0,0 +1,375 @@
+import { Title } from "@solidjs/meta"
+import { createAsync, query, useParams } from "@solidjs/router"
+import { createSignal, For, Show } from "solid-js"
+import { Database, eq } from "@opencode-ai/console-core/drizzle/index.js"
+import { BenchmarkTable } from "@opencode-ai/console-core/schema/benchmark.sql.js"
+import { useI18n } from "~/context/i18n"
+
+interface TaskSource {
+ repo: string
+ from: string
+ to: string
+}
+
+interface Judge {
+ score: number
+ rationale: string
+ judge: string
+}
+
+interface ScoreDetail {
+ criterion: string
+ weight: number
+ average: number
+ variance?: number
+ judges?: Judge[]
+}
+
+interface RunUsage {
+ input: number
+ output: number
+ cost: number
+}
+
+interface Run {
+ task: string
+ model: string
+ agent: string
+ score: {
+ final: number
+ base: number
+ penalty: number
+ }
+ scoreDetails: ScoreDetail[]
+ usage?: RunUsage
+ duration?: number
+}
+
+interface Prompt {
+ commit: string
+ prompt: string
+}
+
+interface AverageUsage {
+ input: number
+ output: number
+ cost: number
+}
+
+interface Task {
+ averageScore: number
+ averageDuration?: number
+ averageUsage?: AverageUsage
+ model?: string
+ agent?: string
+ summary?: string
+ runs?: Run[]
+ task: {
+ id: string
+ source: TaskSource
+ prompts?: Prompt[]
+ }
+}
+
+interface BenchmarkResult {
+ averageScore: number
+ tasks: Task[]
+}
+
+async function getTaskDetail(benchmarkId: string, taskId: string) {
+ "use server"
+ const rows = await Database.use((tx) =>
+ tx.select().from(BenchmarkTable).where(eq(BenchmarkTable.id, benchmarkId)).limit(1),
+ )
+ if (!rows[0]) return null
+ const parsed = JSON.parse(rows[0].result) as BenchmarkResult
+ const task = parsed.tasks.find((t) => t.task.id === taskId)
+ return task ?? null
+}
+
+const queryTaskDetail = query(getTaskDetail, "benchmark.task.detail")
+
+function formatDuration(ms: number): string {
+ const seconds = Math.floor(ms / 1000)
+ const minutes = Math.floor(seconds / 60)
+ const remainingSeconds = seconds % 60
+ if (minutes > 0) {
+ return `${minutes}m ${remainingSeconds}s`
+ }
+ return `${remainingSeconds}s`
+}
+
+export default function BenchDetail() {
+ const params = useParams()
+ const i18n = useI18n()
+ const [benchmarkId, taskId] = (params.id ?? "").split(":")
+ const task = createAsync(() => queryTaskDetail(benchmarkId, taskId))
+
+ return (
+
+
+
+
+
+
+
+
+
+
+ {i18n.t("bench.detail.table.run")}
+
+
+ {i18n.t("bench.detail.table.score")}
+
+
+ {i18n.t("bench.detail.table.cost")}
+
+
+ {i18n.t("bench.detail.table.duration")}
+
+
+ {detail.criterion} ({detail.weight})
+
+ )}
+
+
+ )}
+ {index() + 1}
+
+ {run.score.final.toFixed(3)} ({run.score.base.toFixed(3)} - {run.score.penalty.toFixed(3)})
+
+
+ {run.usage?.cost ? `$${run.usage.cost.toFixed(4)}` : i18n.t("bench.detail.na")}
+
+
+ {run.duration ? formatDuration(run.duration) : i18n.t("bench.detail.na")}
+
+
+
+ )}
+ {i18n.t("bench.detail.run.title", { n: index() + 1 })}
+ {JSON.stringify(task(), null, 2)}
+ {i18n.t("bench.list.heading")}
+
+
+
+
+
+
+
+ {i18n.t("bench.list.table.agent")}
+ {i18n.t("bench.list.table.model")}
+ {i18n.t("bench.list.table.score")}
+ {id} }
+
+ )}
+ {row.agent}
+ {row.model}
+ {row.averageScore.toFixed(3)}
+
+
+ )}
+ {i18n.t("black.hero.title")}
+
+ ${plan().id}{" "}
+ {i18n.t("black.price.perPersonBilledMonthly")}
+
+ {i18n.t("black.finePrint.beforeTerms")} ·{" "} + {i18n.t("black.finePrint.terms")} +
+{i18n.t("black.workspace.selectPlan")}
+{i18n.t("brand.subtitle")}
+ + +{item.title}
+{item.description}
+{i18n.t("changelog.hero.subtitle")}
++ {i18n.t("changelog.empty")}{" "} + {i18n.t("changelog.viewJson")} +
++ {i18n.t("home.promo.body")} {i18n.t("home.promo.cta")} +
+{i18n.t("enterprise.hero.body1")}
+{i18n.t("enterprise.hero.body2")}
+ +{i18n.t("go.hero.body")}
+{i18n.t("go.pricing.body")}
+{i18n.t("go.problem.body")}
+{i18n.t("go.problem.subtitle")}
+{i18n.t("go.how.body")}
+| {i18n.t("go.faq.a5.model")} | +{i18n.t("go.faq.a5.training")} | +{i18n.t("go.faq.a5.retention")} | +
|---|---|---|
| {model.name} | +{i18n.t(model.training)} | +{i18n.t(model.retention)} | +
+ Grok 4.6: {i18n.t("go.faq.a5.grokRetention")}{" "} + + {i18n.t("go.faq.a5.learnMore")} + + . +
++ GPT 5.6 Luna: {i18n.t("go.faq.a5.gptRetention")}{" "} + + {i18n.t("go.faq.a5.learnMore")} + + . +
++ Muse Spark 1.3 Contributor: {i18n.t("go.faq.a5.museRetention")}{" "} + + {i18n.t("go.faq.a5.learnMore")} + + . +
++ Muse Spark 1.2 Contributor: {i18n.t("go.faq.a5.museRetention")}{" "} + + {i18n.t("go.faq.a5.learnMore")} + + . +
++ DeepSeek V4 Flash: {i18n.t("go.faq.a5.deepseekRetention")} +
++ {i18n.t("home.hero.subtitle.a")} + {i18n.t("home.hero.subtitle.b")} +
+{i18n.t("home.what.body")}
++ {i18n.t("home.privacy.body")} {i18n.t("home.privacy.learnMore")}{" "} + {i18n.t("home.privacy.link")}. +
+{i18n.t("home.zenCta.body")}
+Effective date: Mar 6, 2026
+ ++ At OpenCode, we take your privacy seriously. Please read this Privacy Policy to learn how we treat your + personal data.{" "} + + By using or accessing our Services in any manner, you acknowledge that you accept the practices and + policies outlined below, and you hereby consent that we will collect, use and disclose your + information as described in this Privacy Policy. + {" "} + For clarity, our open source software that is not provided to you on a hosted basis is subject to the + open source license and terms set forth on the applicable repository where you access such open source + software, and such license and terms will exclusively govern your use of such open source software. +
+ ++ Remember that your use of OpenCode is at all times subject to our Terms of Use,{" "} + https://opencode.ai/legal/terms-of-service, + which incorporates this Privacy Policy. Any terms we use in this Policy without defining them have the + definitions given to them in the Terms of Use. +
+ +You may print a copy of this Privacy Policy by clicking the print button in your browser.
+ ++ As we continually work to improve our Services, we may need to change this Privacy Policy from time to + time. We will alert you of material changes by placing a notice on the OpenCode website, by sending you + an email and/or by some other means. Please note that if you've opted not to receive legal notice emails + from us (or you haven't provided us with your email address), those legal notices will still govern your + use of the Services, and you are still responsible for reading and understanding them. If you use the + Services after any changes to the Privacy Policy have been posted, that means you agree to all of the + changes. +
+ ++ This Privacy Policy covers how we treat Personal Data that we gather when you access or use our + Services. "Personal Data" means any information that identifies or relates to a particular individual + and also includes information referred to as "personally identifiable information" or "personal + information" under applicable data privacy laws, rules or regulations. This Privacy Policy does not + cover the practices of companies we don't own or control or people we don't manage. +
+ ++ This chart details the categories of Personal Data that we collect and have collected over the past 12 + months: +
+ +| Category of Personal Data (and Examples) | +Business or Commercial Purpose(s) for Collection | +Categories of Third Parties With Whom We Disclose this Personal Data | +
|---|---|---|
| + Profile or Contact Data such as first and last name, email, phone number and + mailing address. + | +
+
|
+
+
|
+
| + Payment Data such as financial account information, payment card type, full + number of payment card, last 4 digits of payment card, bank account information, billing + address, billing phone number and billing email + | +
+
|
+
+
|
+
| + Device/IP Data such as IP address, device ID, domain server, type of + device/operating system/browser used to access the Services. + | +
+
|
+
+
|
+
| + Other Identifying Information that You Voluntarily Choose to Provide such as + information included in conversations or prompts that you submit to AI + | +
+
|
+
+
|
+
+ In addition, each of the above referenced categories of Personal Data may be collected, used, and + disclosed with the government, including law enforcement, or other parties to meet certain legal + requirements and enforcing legal terms including: fulfilling our legal obligations under applicable law, + regulation, court order or other legal process, such as preventing, detecting and investigating security + incidents and potentially illegal or prohibited activities; protecting the rights, property or safety of + you, OpenCode or another party; enforcing any agreements with you; responding to claims that any posting + or other content violates third-party rights; and resolving disputes. +
+ ++ We will not collect additional categories of Personal Data or use the Personal Data we collected for + materially different, unrelated or incompatible purposes without providing you notice or obtaining your + consent. +
+ +We collect Personal Data about you from the following categories of sources:
+ ++ We disclose your Personal Data to the categories of service providers and other parties listed in this + section. Depending on state laws that may be applicable to you, some of these disclosures may constitute + a "sale" of your Personal Data. For more information, please refer to the state-specific sections below. +
+ ++ These parties help us provide the Services or perform business functions on our behalf. They include: +
+These parties partner with us in offering various services. They include:
+Parties You Authorize, Access or Authenticate.
+ ++ We may disclose any Personal Data that we collect with third parties in conjunction with any of the + activities set forth under "Other Permitted Purposes for Processing Personal Data" section above. +
+ ++ All of your Personal Data that we collect may be transferred to a third party if we undergo a merger, + acquisition, bankruptcy or other transaction in which that third party assumes control of our business + (in whole or in part). +
+ ++ We may create aggregated, de-identified or anonymized data from the Personal Data we collect, including + by removing information that makes the data personally identifiable to a particular user. We may use + such aggregated, de-identified or anonymized data and disclose it with third parties for our lawful + business purposes, including to analyze, build and improve the Services and promote our business, + provided that we will not disclose such data in a manner that could identify you. +
+ ++ The Services use cookies and similar technologies such as pixel tags, web beacons, clear GIFs and + JavaScript (collectively, "Cookies") to enable our servers to recognize your web browser, tell us how + and when you visit and use our Services, analyze trends, learn about our user base and operate and + improve our Services. Cookies are small pieces of data– usually text files – placed on your computer, + tablet, phone or similar device when you use that device to access our Services. We may also supplement + the information we collect from you with information received from third parties, including third + parties that have placed their own Cookies on your device(s). +
+ ++ Please note that because of our use of Cookies, the Services do not support "Do Not Track" requests sent + from a browser at this time. +
+ +We use the following types of Cookies:
+ ++ You can decide whether or not to accept Cookies through your internet browser's settings. Most browsers + have an option for turning off the Cookie feature, which will prevent your browser from accepting new + Cookies, as well as (depending on the sophistication of your browser software) allow you to decide on + acceptance of each new Cookie in a variety of ways. You can also delete all Cookies that are already on + your device. If you do this, however, you may have to manually adjust some preferences every time you + visit our website and some of the Services and functionalities may not work. +
+ ++ To find out more information about Cookies generally, including information about how to manage and + delete Cookies, please visit{" "} + http://www.allaboutcookies.org/. +
+ ++ We seek to protect your Personal Data from unauthorized access, use and disclosure using appropriate + physical, technical, organizational and administrative security measures based on the type of Personal + Data and how we are processing that data. You should also help protect your data by appropriately + selecting and protecting your password and/or other sign-on mechanism; limiting access to your computer + or device and browser; and signing off after you have finished accessing your account. Although we work + to protect the security of your account and other data that we hold in our records, please be aware that + no method of transmitting data over the internet or storing data is completely secure. +
+ ++ We retain Personal Data about you for as long as necessary to provide you with our Services or to + perform our business or commercial purposes for collecting your Personal Data. When establishing a + retention period for specific categories of data, we consider who we collected the data from, our need + for the Personal Data, why we collected the Personal Data, and the sensitivity of the Personal Data. In + some cases we retain Personal Data for longer, if doing so is necessary to comply with our legal + obligations, resolve disputes or collect fees owed, or is otherwise permitted or required by applicable + law, rule or regulation. We may further retain information in an anonymous or aggregated form where that + information would not identify you personally. +
+ ++ As noted in the Terms of Use, we do not knowingly collect or solicit Personal Data from children under + 18 years of age; if you are a child under the age of 18, please do not attempt to register for or + otherwise use the Services or send us any Personal Data. If we learn we have collected Personal Data + from a child under 18 years of age, we will delete that information as quickly as possible. If you + believe that a child under 18 years of age may have provided Personal Data to us, please contact us at{" "} + help@anoma.ly. +
+ ++ If you are a California resident, you have the rights set forth in this section. Please see the + "Exercising Your Rights under the State Privacy Laws" section below for instructions regarding how to + exercise these rights. Please note that we may process Personal Data of our customers' end users or + employees in connection with our provision of certain services to our customers. If we are processing + your Personal Data as a service provider, you should contact the entity that collected your Personal + Data in the first instance to address your rights with respect to such data. Additionally, please note + that these rights are subject to certain conditions and exceptions under applicable law, which may + permit or require us to deny your request. +
+ ++ If there are any conflicts between this section and any other provision of this Privacy Policy and you + are a California resident, the portion that is more protective of Personal Data shall control to the + extent of such conflict. If you have any questions about this section or whether any of the following + rights apply to you, please contact us at help@anoma.ly. +
+ ++ You have the right to request certain information about our collection and use of your Personal Data. In + response, we will provide you with the following information in the past 12 months: +
++ If we have disclosed your Personal Data to any third parties for a business purpose over the past 12 + months, we will identify the categories of Personal Data shared with each category of third party + recipient. If we have sold your Personal Data over the past 12 months, we will identify the categories + of Personal Data sold to each category of third party recipient. +
+ ++ You may request the above information beyond the 12-month period, but no earlier than January 1, 2022. + If you do make such a request, we are required to provide that information unless doing so proves + impossible or would involve disproportionate effort. +
+ ++ You have the right to request that we delete the Personal Data that we have collected from you. Under + the CCPA, this right is subject to certain exceptions: for example, we may need to retain your Personal + Data to provide you with the Services or complete a transaction or other action you have requested, or + if deletion of your Personal Data involves disproportionate effort. If your deletion request is subject + to one of these exceptions, we may deny your deletion request. +
+ ++ You have the right to request that we correct any inaccurate Personal Data we have collected about you. + Under the CCPA, this right is subject to certain exceptions: for example, if we decide, based on the + totality of circumstances related to your Personal Data, that such data is correct. If your correction + request is subject to one of these exceptions, we may deny your request. +
+ ++ We will not sell or share your Personal Data, and have not done so over the last 12 months. To our + knowledge, we do not sell or share the Personal Data of minors under 13 years of age or of consumers + under 16 years of age. +
+ ++ Consumers have certain rights over the processing of their Sensitive Personal Information. However, we + do not collect Sensitive Personal Information. +
+ ++ We will not discriminate against you for exercising your rights under the CCPA. We will not deny you our + goods or services, charge you different prices or rates, or provide you a lower quality of goods and + services if you exercise your rights under the CCPA. However, we may offer different tiers of our + Services as allowed by applicable data privacy laws (including the CCPA) with varying prices, rates or + levels of quality of the goods or services you receive related to the value of Personal Data that we + receive from you. +
+ ++ If you are a Colorado resident, you have the rights set forth under the Colorado Privacy Act ("CPA"). + Please see the "Exercising Your Rights under the State Privacy Laws" section below for instructions + regarding how to exercise these rights. Please note that we may process Personal Data of our customers' + end users or employees in connection with our provision of certain services to our customers. If we are + processing your Personal Data as a service provider, you should contact the entity that collected your + Personal Data in the first instance to address your rights with respect to such data. Additionally, + please note that these rights are subject to certain conditions and exceptions under applicable law, + which may permit or require us to deny your request. +
+ ++ If there are any conflicts between this section and any other provision of this Privacy Policy and you + are a Colorado resident, the portion that is more protective of Personal Data shall control to the + extent of such conflict. If you have any questions about this section or whether any of the following + rights apply to you, please contact us at help@anoma.ly. +
+ ++ You have the right to request confirmation of whether or not we are processing your Personal Data and to + access and request a copy of your Personal Data in a machine-readable format, to the extent technically + feasible, twice within a calendar year. +
+ ++ You have the right to correct inaccuracies in your Personal Data, to the extent such correction is + appropriate in consideration of the nature of such data and our purposes of processing your Personal + Data. +
+ +You have the right to delete Personal Data concerning you.
+ ++ We do not currently sell or process for the purposes of targeted advertising your Personal Data as + defined under the CPA. +
+ ++ We do not process your Personal Data for "Profiling" to make "Decisions" under the CPA. "Profiling" + means any form of automated processing performed on personal data to evaluate, analyze or predict + personal aspects related to an identified or identifiable individual's economic situation, health, + personal preferences, interests, reliability, behavior, location or movements. "Decision" means any + "Decisions that produce legal or similarly significant effects concerning a Consumer," as defined in the + CPA that concern you. +
+ ++ We may seek your consent to collect or process certain Personal Data, including: 1) Sensitive Data, 2) + Personal Data from a known child under 13 years of age, 3) to sell, or process Personal Data for + Targeted Advertising or Profiling after you exercise your right to opt-out, or 4) Personal Data for + Secondary Use. +
+ ++ If you would like to withdraw your consent, please follow the instructions under the "Exercising Your + Rights under the State Privacy Laws" section. +
+ ++ We will not process your personal data in violation of state and federal laws that prohibit unlawful + discrimination against consumers. +
+ ++ If you are a Connecticut resident, you have the rights set forth under the Connecticut Data Privacy Act + ("CTDPA"). Please see the "Exercising Your Rights under the State Privacy Laws" section below for + instructions regarding how to exercise these rights. Please note that we may process Personal Data of + our customers' end users or employees in connection with our provision of certain services to our + customers. If we are processing your Personal Data as a service provider, you should contact the entity + that collected your Personal Data in the first instance to address your rights with respect to such + data. Additionally, please note that these rights are subject to certain conditions and exceptions under + applicable law, which may permit or require us to deny your request. +
+ ++ If there are any conflicts between this section and any other provision of this Privacy Policy and you + are a Connecticut resident, the portion that is more protective of Personal Data shall control to the + extent of such conflict. If you have any questions about this section or whether any of the following + rights apply to you, please contact us at help@anoma.ly. +
+ ++ You have the right to request confirmation of whether or not we are processing your Personal Data and to + access your Personal Data and request a copy of your Personal Data in a machine-readable format, to the + extent technically feasible. +
+ ++ You have the right to correct inaccuracies in your Personal Data, to the extent such correction is + appropriate in consideration of the nature of such data and our purposes of processing your Personal + Data. +
+ +You have the right to delete Personal Data you have provided to us or we have obtained about you.
+ ++ We do not currently sell or process for the purposes of targeted advertising your Personal Data as + defined under the CTDPA. +
+ ++ We do not process your Personal Data for "Profiling" as defined under the CTDPA. "Profiling" means any + form of automated processing performed on personal data to evaluate, analyze or predict personal aspects + related to an identified or identifiable individual's economic situation, health, personal preferences, + interests, reliability, behavior, location or movements. +
+ ++ We may seek your consent to collect or process certain Personal Data, including: 1) Sensitive Data, 2) + Sensitive Data from a known child under 13 years of age, or 3) to sell, or process Personal Data for + Targeted Advertising of a consumer at least 13 years of age but younger than 16 years of age. +
+ +However, we currently do not collect or process your Personal Data as described above.
+ ++ We will not discriminate against you for exercising your rights under the CTDPA. We will not deny you + our goods or services, charge you different prices or rates, or provide you a lower quality of goods and + services if you exercise your rights under the CTDPA. However, we may offer different tiers of our + Services as allowed by applicable data privacy laws (including the CTDPA) with varying prices, rates or + levels of quality of the goods or services you receive related to the value of Personal Data that we + receive from you. +
+ ++ If you are a Delaware resident, you have the rights set forth under the Delaware Personal Data Privacy + Act ("DPDPA"). Please see the "Exercising Your Rights under the State Privacy Laws" section below for + instructions regarding how to exercise these rights. Please note that we may process Personal Data of + our customers' end users or employees in connection with our provision of certain services to our + customers. If we are processing your Personal Data as a service provider, you should contact the entity + that collected your Personal Data in the first instance to address your rights with respect to such + data. Additionally, please note that these rights are subject to certain conditions and exceptions under + applicable law, which may permit or require us to deny your request. +
+ ++ If there are any conflicts between this section and any other provision of this Privacy Policy and you + are a Delaware resident, the portion that is more protective of Personal Data shall control to the + extent of such conflict. If you have any questions about this section or whether any of the following + rights apply to you, please contact us at help@anoma.ly. +
+ ++ You have the right to request confirmation of whether or not we are processing your Personal Data and to + access and request a copy of your Personal Data in a machine-readable format, to the extent technically + feasible. +
+ ++ You have the right to correct inaccuracies in your Personal Data, to the extent such correction is + appropriate in consideration of the nature of such data and our purposes of processing your Personal + Data. +
+ +You have the right to delete Personal Data you have provided to us or we have obtained about you.
+ ++ We do not currently sell or process for the purposes of targeted advertising your Personal Data as + defined under the DPDPA. +
+ ++ We do not process your Personal Data for "Profiling" to make "Decisions" under the DPDPA. "Profiling" + means any form of automated processing performed on personal data to evaluate, analyze or predict + personal aspects related to an identified or identifiable individual's economic circumstances, health, + personal preferences, interests, reliability, behavior, location or movements. "Decision" means any + "Decisions that produce legal or similarly significant effects concerning a Consumer," as defined in the + DPDPA that concern you. To our knowledge, we do not process the Personal Data of consumers under 18 + years of age for the purpose of Profiling. +
+ ++ We may seek your consent to collect or process certain Personal Data, including: 1) Sensitive Data, 2) + Sensitive Data from a known child under 13 years of age, 3) or to sell, or process Personal Data for + Targeted Advertising, or Profiling of a consumer at least 13 years of age but younger than 18 years of + age. +
+ +However, we currently do not collect or process your Personal Data as described above.
+ ++ We will not discriminate against you for exercising your rights under the DPDPA. We will not deny you + our goods or services, charge you different prices or rates, or provide you a lower quality of goods and + services if you exercise your rights under the DPDPA. However, we may offer different tiers of our + Services as allowed by applicable data privacy laws (including the DPDPA) with varying prices, rates or + levels of quality of the goods or services you receive related to the value of Personal Data that we + receive from you. +
+ ++ If you are an Iowa resident, you have the rights set forth under the Iowa Consumer Data Protection Act + ("ICDPA"). Please see the "Exercising Your Rights under the State Privacy Laws" section below for + instructions regarding how to exercise these rights. Please note that we may process Personal Data of + our customers' end users or employees in connection with our provision of certain services to our + customers. If we are processing your Personal Data as a service provider, you should contact the entity + that collected your Personal Data in the first instance to address your rights with respect to such + data. Additionally, please note that these rights are subject to certain conditions and exceptions under + applicable law, which may permit or require us to deny your request. +
+ ++ If there are any conflicts between this section and any other provision of this Privacy Policy and you + are an Iowa resident, the portion that is more protective of Personal Data shall control to the extent + of such conflict. If you have any questions about this section or whether any of the following rights + apply to you, please contact us at help@anoma.ly. +
+ ++ You have the right to request confirmation of whether or not we are processing your Personal Data and to + access and request a copy of your Personal Data in a machine-readable format, to the extent technically + feasible, twice within a calendar year. +
+ +You have the right to delete Personal Data you have provided to us.
+ ++ We will not discriminate against you for exercising your rights under the ICDPA. We will not deny you + our goods or services, charge you different prices or rates, or provide you a lower quality of goods and + services if you exercise your rights under the ICDPA. However, we may offer different tiers of our + Services as allowed by applicable data privacy laws (including the ICDPA) with varying prices, rates or + levels of quality of the goods or services you receive related to the value of Personal Data that we + receive from you. +
+ ++ If you are a Montana resident, you have the rights set forth under the Montana Consumer Data Privacy Act + ("MCDPA"). Please see the "Exercising Your Rights under the State Privacy Laws" section below for + instructions regarding how to exercise these rights. Please note that we may process Personal Data of + our customers' end users or employees in connection with our provision of certain services to our + customers. If we are processing your Personal Data as a service provider, you should contact the entity + that collected your Personal Data in the first instance to address your rights with respect to such + data. Additionally, please note that these rights are subject to certain conditions and exceptions under + applicable law, which may permit or require us to deny your request. +
+ ++ If there are any conflicts between this section and any other provision of this Privacy Policy and you + are a Montana resident, the portion that is more protective of Personal Data shall control to the extent + of such conflict. If you have any questions about this section or whether any of the following rights + apply to you, please contact us at help@anoma.ly. +
+ ++ You have the right to request confirmation of whether or not we are processing your Personal Data and to + access your Personal Data and request a copy of your Personal Data in a machine-readable format, to the + extent technically feasible. +
+ ++ You have the right to correct inaccuracies in your Personal Data, to the extent such correction is + appropriate in consideration of the nature of such data and our purposes of processing your Personal + Data. +
+ +You have the right to delete Personal Data you have provided to us or we have obtained about you.
+ ++ We do not currently sell or process for the purposes of targeted advertising your Personal Data as + defined under the MCDPA. +
+ ++ We do not process your Personal Data for "Profiling" to make "Decisions" under the MCDPA. "Profiling" + means any form of automated processing performed on personal data to evaluate, analyze or predict + personal aspects related to an identified or identifiable individual's economic circumstances, health, + personal preferences, interests, reliability, behavior, location or movements. "Decision" means any + "Decisions that produce legal or similarly significant effects concerning a Consumer," as defined in the + MCDPA that concern you. To our knowledge, we do not process the Personal Data of consumers under 16 + years of age for the purpose of Profiling. +
+ ++ We may seek your consent to collect or process certain Personal Data, including: 1) Sensitive Data, 2) + Sensitive Data from a known child under 13 years of age, or 3) to sell, or process Personal Data for + Targeted Advertising or Profiling of a consumer at least 13 years of age but younger than 16 years of + age. +
+ +However, we currently do not collect or process your Personal Data as described above.
+ ++ We will not discriminate against you for exercising your rights under the MCDPA. We will not deny you + our goods or services, charge you different prices or rates, or provide you a lower quality of goods and + services if you exercise your rights under the MCDPA. However, we may offer different tiers of our + Services as allowed by applicable data privacy laws (including the MCDPA) with varying prices, rates or + levels of quality of the goods or services you receive related to the value of Personal Data that we + receive from you. +
+ ++ If you are a Nebraska resident, you have the rights set forth under the Nebraska Data Privacy Act + ("NDPA"). Please see the "Exercising Your Rights under the State Privacy Laws" section below for + instructions regarding how to exercise these rights. Please note that we may process Personal Data of + our customers' end users or employees in connection with our provision of certain services to our + customers. If we are processing your Personal Data as a service provider, you should contact the entity + that collected your Personal Data in the first instance to address your rights with respect to such + data. Additionally, please note that these rights are subject to certain conditions and exceptions under + applicable law, which may permit or require us to deny your request. +
+ ++ If there are any conflicts between this section and any other provision of this Privacy Policy and you + are a Nebraska resident, the portion that is more protective of Personal Data shall control to the + extent of such conflict. If you have any questions about this section or whether any of the following + rights apply to you, please contact us at help@anoma.ly. +
+ ++ You have the right to request confirmation of whether or not we are processing your Personal Data and to + access your Personal Data and request a copy of your Personal Data in a machine-readable format, to the + extent technically feasible, twice within a calendar year. +
+ ++ You have the right to correct inaccuracies in your Personal Data, to the extent such correction is + appropriate in consideration of the nature of such data and our purposes of processing your Personal + Data. +
+ +You have the right to delete Personal Data you have provided to us or we have obtained about you.
+ ++ We do not currently sell or process for the purposes of targeted advertising your Personal Data as + defined under the NDPA. +
+ ++ We do not process your Personal Data for "Profiling" to make "Decisions" under the NDPA. "Profiling" + means any form of automated processing performed on personal data to evaluate, analyze or predict + personal aspects related to an identified or identifiable individual's economic circumstances, health, + personal preferences, interests, reliability, behavior, location or movements. "Decision" means any + "Decisions that produce legal or similarly significant effects concerning a Consumer," as defined in the + NDPA that concern you. +
+ ++ We may seek your consent to collect or process certain Personal Data, including: 1) Sensitive Data and + 2) Sensitive Data from a known child under 13 years of age. +
+ +However, we currently do not collect or process your Personal Data as described above.
+ ++ We will not discriminate against you for exercising your rights under the NDPA. We will not deny you our + goods or services, charge you different prices or rates, or provide you a lower quality of goods and + services if you exercise your rights under the NDPA. However, we may offer different tiers of our + Services as allowed by applicable data privacy laws (including the NDPA) with varying prices, rates or + levels of quality of the goods or services you receive related to the value of Personal Data that we + receive from you. +
+ ++ If you are a New Hampshire resident, you have the rights set forth under the New Hampshire Privacy Act + ("NHPA"). Please see the "Exercising Your Rights under the State Privacy Laws" section below for + instructions regarding how to exercise these rights. Please note that we may process Personal Data of + our customers' end users or employees in connection with our provision of certain services to our + customers. If we are processing your Personal Data as a service provider, you should contact the entity + that collected your Personal Data in the first instance to address your rights with respect to such + data. Additionally, please note that these rights are subject to certain conditions and exceptions under + applicable law, which may permit or require us to deny your request. +
+ ++ If there are any conflicts between this section and any other provision of this Privacy Policy and you + are a New Hampshire resident, the portion that is more protective of Personal Data shall control to the + extent of such conflict. If you have any questions about this section or whether any of the following + rights apply to you, please contact us at help@anoma.ly. +
+ ++ You have the right to request confirmation of whether or not we are processing your Personal Data and to + access your Personal Data and request a copy of your Personal Data in a machine-readable format, to the + extent technically feasible. +
+ ++ You have the right to correct inaccuracies in your Personal Data, to the extent such correction is + appropriate in consideration of the nature of such data and our purposes of processing your Personal + Data. +
+ +You have the right to delete Personal Data you have provided to us or we have obtained about you.
+ ++ We do not currently sell or process for the purposes of targeted advertising your Personal Data as + defined under the NHPA. +
+ ++ We do not process your Personal Data for "Profiling" to make "Decisions" under the NHPA. "Profiling" + means any form of automated processing performed on personal data to evaluate, analyze or predict + personal aspects related to an identified or identifiable individual's economic circumstances, health, + personal preferences, interests, reliability, behavior, location or movements. "Decision" means any + "Decisions that produce legal or similarly significant effects concerning a Consumer," as defined in the + NHPA that concern you. +
+ ++ We may seek your consent to collect or process certain Personal Data, including: 1) Sensitive Data and + 2) Sensitive Data from a known child under 13 years of age, 3) or to sell or process Personal Data for + Targeted Advertising of a consumer at least 13 years of age but younger than 16 years of age. +
+ +However, we currently do not collect or process your Personal Data as described above.
+ ++ We will not discriminate against you for exercising your rights under the NHPA. We will not deny you our + goods or services, charge you different prices or rates, or provide you a lower quality of goods and + services if you exercise your rights under the NHPA. However, we may offer different tiers of our + Services as allowed by applicable data privacy laws (including the NHPA) with varying prices, rates or + levels of quality of the goods or services you receive related to the value of Personal Data that we + receive from you. +
+ ++ If you are a New Jersey resident, you have the rights set forth under the New Jersey Privacy Act + ("NJPA"). Please see the "Exercising Your Rights under the State Privacy Laws" section below for + instructions regarding how to exercise these rights. Please note that we may process Personal Data of + our customers' end users or employees in connection with our provision of certain services to our + customers. If we are processing your Personal Data as a service provider, you should contact the entity + that collected your Personal Data in the first instance to address your rights with respect to such + data. Additionally, please note that these rights are subject to certain conditions and exceptions under + applicable law, which may permit or require us to deny your request. +
+ ++ If there are any conflicts between this section and any other provision of this Privacy Policy and you + are a New Jersey resident, the portion that is more protective of Personal Data shall control to the + extent of such conflict. If you have any questions about this section or whether any of the following + rights apply to you, please contact us at help@anoma.ly. +
+ ++ You have the right to request confirmation of whether or not we are processing your Personal Data and to + access and request a copy of your Personal Data in a machine-readable format, to the extent technically + feasible. +
+ ++ You have the right to correct inaccuracies in your Personal Data, to the extent such correction is + appropriate in consideration of the nature of such data and our purposes of processing your Personal + Data. +
+ +You have the right to delete Personal Data concerning you.
+ ++ We do not currently sell or process for the purposes of targeted advertising your Personal Data as + defined under the NJPA. +
+ ++ We do not process your Personal Data for "Profiling" to make "Decisions" under the NJPA. "Profiling" + means any form of automated processing performed on personal data to evaluate, analyze or predict + personal aspects related to an identified or identifiable individual's economic circumstances, health, + personal preferences, interests, reliability, behavior, location or movements. "Decision" means any + "Decisions that produce legal or similarly significant effects concerning a Consumer," as defined in the + NJPA that concern you. To our knowledge, we do not process the Personal Data of consumers under 17 years + of age for the purpose of Profiling. +
+ ++ We may seek your consent to collect or process certain Personal Data, including: 1) Sensitive Data, 2) + Sensitive Data from a known child under 13 years of age, 3) or to sell, or process Personal Data for + Targeted Advertising, or Profiling of a consumer at least 13 years of age but younger than 17 years of + age. +
+ +However, we currently do not collect or process your Personal Data as described above.
+ ++ We will not discriminate against you for exercising your rights under the NJPA. We will not deny you our + goods or services, charge you different prices or rates, or provide you a lower quality of goods and + services if you exercise your rights under the NJPA. However, we may offer different tiers of our + Services as allowed by applicable data privacy laws (including the NJPA) with varying prices, rates or + levels of quality of the goods or services you receive related to the value of Personal Data that we + receive from you. +
+ ++ If you are an Oregon resident, you have the rights set forth under the Oregon Consumer Privacy Act + ("OCPA"). Please see the "Exercising Your Rights under the State Privacy Laws" section below for + instructions regarding how to exercise these rights. Please note that we may process Personal Data of + our customers' end users or employees in connection with our provision of certain services to our + customers. If we are processing your Personal Data as a service provider, you should contact the entity + that collected your Personal Data in the first instance to address your rights with respect to such + data. Additionally, please note that these rights are subject to certain conditions and exceptions under + applicable law, which may permit or require us to deny your request. +
+ ++ If there are any conflicts between this section and any other provision of this Privacy Policy and you + are an Oregon resident, the portion that is more protective of Personal Data shall control to the extent + of such conflict. If you have any questions about this section or whether any of the following rights + apply to you, please contact us at help@anoma.ly. +
+ ++ You have the right to request confirmation of whether or not we are processing your Personal Data and to + access and request a copy of your Personal Data, including a list of specific third parties, other than + natural persons, to which we have disclosed your Personal Data or any Personal Data, in a + machine-readable format, to the extent technically feasible. +
+ ++ You have the right to correct inaccuracies in your Personal Data, to the extent such correction is + appropriate in consideration of the nature of such data and our purposes of processing your Personal + Data. +
+ +You have the right to delete Personal Data you have provided to us or we have obtained about you.
+ ++ We do not currently sell or process for the purposes of targeted advertising your Personal Data as + defined under the OCPA. +
+ ++ We do not process your Personal Data for "Profiling" to make "Decisions" under the OCPA. "Profiling" + means any form of automated processing performed on personal data to evaluate, analyze or predict + personal aspects related to an identified or identifiable individual's economic circumstances, health, + personal preferences, interests, reliability, behavior, location or movements. "Decision" means any + "Decisions that produce legal or similarly significant effects concerning a Consumer," as defined in the + OCPA that concern you. To our knowledge, we do not process the Personal Data of consumers under 16 years + of age for the purpose of Profiling. +
+ ++ We may seek your consent to collect or process certain Personal Data, including: 1) Sensitive Data, 2) + Sensitive Data from a known child under 13 years of age, or 3) to sell, or process Personal Data for + Targeted Advertising, or Profiling of a consumer at least 13 years of age but younger than 16 years of + age. +
+ +However, we currently do not collect or process your Personal Data as described above.
+ ++ We will not discriminate against you for exercising your rights under the OCPA. We will not deny you our + goods or services, charge you different prices or rates, or provide you a lower quality of goods and + services if you exercise your rights under the OCPA. However, we may offer different tiers of our + Services as allowed by applicable data privacy laws (including the OCPA) with varying prices, rates or + levels of quality of the goods or services you receive related to the value of Personal Data that we + receive from you. +
+ ++ If you are a Texas resident, you have the rights set forth under the Texas Data Privacy and Security Act + ("TDPSA"). Please see the "Exercising Your Rights under the State Privacy Laws" section below for + instructions regarding how to exercise these rights. Please note that we may process Personal Data of + our customers' end users or employees in connection with our provision of certain services to our + customers. If we are processing your Personal Data as a service provider, you should contact the entity + that collected your Personal Data in the first instance to address your rights with respect to such + data. Additionally, please note that these rights are subject to certain conditions and exceptions under + applicable law, which may permit or require us to deny your request. +
+ ++ If there are any conflicts between this section and any other provision of this Privacy Policy and you + are a Texas resident, the portion that is more protective of Personal Data shall control to the extent + of such conflict. If you have any questions about this section or whether any of the following rights + apply to you, please contact us at help@anoma.ly. +
+ ++ You have the right to request confirmation of whether or not we are processing your Personal Data and to + access your Personal Data and request a copy of your Personal Data in a machine-readable format, to the + extent technically feasible, twice within a calendar year. +
+ ++ You have the right to correct inaccuracies in your Personal Data, to the extent such correction is + appropriate in consideration of the nature of such data and our purposes of processing your Personal + Data. +
+ +You have the right to delete Personal Data you have provided to us or we have obtained about you.
+ ++ We do not currently sell or process for the purposes of targeted advertising your Personal Data as + defined under the TDPSA. +
+ ++ We do not process your Personal Data for "Profiling" as defined under the TDPSA. "Profiling" means any + form of solely automated processing performed on personal data to evaluate, analyze, or predict personal + aspects related to an identified or identifiable individual's economic situation, health, personal + preferences, interests, reliability, behavior, location, or movements. +
+ ++ We may seek your consent to collect or process certain Personal Data, including: 1) Sensitive Data, or + 2) Sensitive Data from a known child under 13 years of age. +
+ +However, we currently do not collect or process your Personal Data as described above.
+ ++ We will not discriminate against you for exercising your rights under the TDPSA. We will not deny you + our goods or services, charge you different prices or rates, or provide you a lower quality of goods and + services if you exercise your rights under the TDPSA. However, we may offer different tiers of our + Services as allowed by applicable data privacy laws (including the TDPSA) with varying prices, rates or + levels of quality of the goods or services you receive related to the value of Personal Data that we + receive from you. +
+ ++ If you are a Utah resident, you have the rights set forth under the Utah Consumer Privacy Act ("UCPA"). + Please see the "Exercising Your Rights under the State Privacy Laws" section below for instructions + regarding how to exercise these rights. Please note that we may process Personal Data of our customers' + end users or employees in connection with our provision of certain services to our customers. If we are + processing your Personal Data as a service provider, you should contact the entity that collected your + Personal Data in the first instance to address your rights with respect to such data. Additionally, + please note that these rights are subject to certain conditions and exceptions under applicable law, + which may permit or require us to deny your request. +
+ ++ If there are any conflicts between this section and any other provision of this Privacy Policy and you + are a Utah resident, the portion that is more protective of Personal Data shall control to the extent of + such conflict. If you have any questions about this section or whether any of the following rights apply + to you, please contact us at help@anoma.ly. +
+ ++ You have the right to request confirmation of whether or not we are processing your Personal Data and to + access your Personal Data and request a copy of your Personal Data in a machine-readable format, to the + extent technically feasible. +
+ +You have the right to delete Personal Data that you have provided to us.
+ ++ We will not discriminate against you for exercising your rights under the UCPA. We will not deny you our + goods or services, charge you different prices or rates, or provide you a lower quality of goods and + services if you exercise your rights under the UCPA. However, we may offer different tiers of our + Services as allowed by applicable data privacy laws (including the UCPA) with varying prices, rates or + levels of quality of the goods or services you receive related to the value of Personal Data that we + receive from you. +
+ ++ If you are a Virginia resident, you have the rights set forth under the Virginia Consumer Data + Protection Act ("VCDPA"). Please see the "Exercising Your Rights under the State Privacy Laws" section + below for instructions regarding how to exercise these rights. Please note that we may process Personal + Data of our customers' end users or employees in connection with our provision of certain services to + our customers. If we are processing your Personal Data as a service provider, you should contact the + entity that collected your Personal Data in the first instance to address your rights with respect to + such data. Additionally, please note that these rights are subject to certain conditions and exceptions + under applicable law, which may permit or require us to deny your request. +
+ ++ If there are any conflicts between this section and any other provision of this Privacy Policy and you + are a Virginia resident, the portion that is more protective of Personal Data shall control to the + extent of such conflict. If you have any questions about this section or whether any of the following + rights apply to you, please contact us at help@anoma.ly. +
+ ++ You have the right to request confirmation of whether or not we are processing your Personal Data and to + access your Personal Data, and request a copy of your Personal Data in a machine-readable format, to the + extent technically feasible. +
+ ++ You have the right to correct inaccuracies in your Personal Data, to the extent such correction is + appropriate in consideration of the nature of such data and our purposes of processing your Personal + Data. +
+ +You have the right to delete Personal Data you have provided to us or we have obtained about you.
+ ++ We may seek your consent to collect or process certain Personal Data, including: 1) Sensitive Data, or + 2) Sensitive Data from a known child under 13 years of age. +
+ +However, we currently do not collect or process Personal data as described above.
+ ++ To exercise any of your rights for these certain processing activities, please follow the instructions + under the "Exercising Your Rights under the State Privacy Laws" section. +
+ ++ We will not discriminate against you for exercising your rights under the VCDPA. We will not deny you + our goods or services, charge you different prices or rates, or provide you a lower quality of goods and + services if you exercise your rights under the VCDPA. However, we may offer different tiers of our + Services as allowed by applicable data privacy laws (including the VCDPA) with varying prices, rates or + levels of quality of the goods or services you receive related to the value of Personal Data that we + receive from you. +
+ ++ To exercise the rights described in this Privacy Policy, you or, if you are a California, Colorado, + Connecticut, Delaware, Montana, Nebraska, New Hampshire, New Jersey, Oregon or Texas resident, your + Authorized Agent (defined below) must send us a request that (1) provides sufficient information to + allow us to verify that you are the person about whom we have collected Personal Data, and (2) describes + your request in sufficient detail to allow us to understand, evaluate and respond to it. Each request + that meets both of these criteria will be considered a "Valid Request." We may not respond to requests + that do not meet these criteria. We will only use Personal Data provided in a Valid Request to verify + your identity and complete your request. You do not need an account to submit a Valid Request. +
+ ++ We will work to respond to your Valid Request within the time period required by applicable law. We will + not charge you a fee for making a Valid Request unless your Valid Request(s) is excessive, repetitive or + manifestly unfounded. If we determine that your Valid Request warrants a fee, we will notify you of the + fee and explain that decision before completing your request. +
+ ++ If you are a California resident, you may withdraw your consent allowing us: 1) to sell or share your + Personal Data, by using the following method: +
++ You may submit a Valid Request for any other rights afforded to you in this Privacy Policy by using the + following methods: +
++ If you are a California, Colorado, Connecticut, Delaware, Montana, Nebraska, New Hampshire, New Jersey, + Oregon or Texas resident, you may also authorize an agent (an "Authorized Agent") to exercise your + rights on your behalf. To do this, you must provide your Authorized Agent with written permission to + exercise your rights on your behalf, and we may request a copy of this written permission from your + Authorized Agent when they make a request on your behalf. +
+ ++ If you are a Colorado, Connecticut, Delaware, Iowa, Montana, Nebraska, New Hampshire, New Jersey, + Oregon, Texas or Virginia resident and we refuse to take action on your request within a reasonable + period of time after receiving your request in accordance with this section, you may appeal our + decision. In such appeal, you must (1) provide sufficient information to allow us to verify that you are + the person about whom the original request pertains and to identify the original request, and (2) + provide a description of the basis of your appeal. Please note that your appeal will be subject to your + rights and obligations afforded to you under the State Privacy Laws (as applicable). We will respond to + your appeal within the time period required under the applicable law. You can submit a Verified Request + to appeal by the following methods: +
++ If we deny your appeal, you have the right to contact the Attorney General of your State, including by + the following links: Colorado, Connecticut, Delaware, Iowa, Montana, Nebraska, New Hampshire, New + Jersey, Oregon, Texas and Virginia. +
+ ++ Under California Civil Code Sections 1798.83-1798.84, California residents are entitled to contact us to + prevent disclosure of Personal Data to third parties for such third parties' direct marketing purposes; + in order to submit such a request, please contact us at help@anoma.ly + . +
+ ++ Your browser may offer you a "Do Not Track" option, which allows you to signal to operators of websites + and web applications and services that you do not wish such operators to track certain of your online + activities over time and across different websites. Our Services do not support Do Not Track requests at + this time. To find out more about "Do Not Track," you can visit{" "} + www.allaboutdnt.com. +
+ ++ Please note that we do not currently sell your Personal Data as sales are defined in Nevada Revised + Statutes Chapter 603A. +
+ ++ If you have any questions or comments about this Privacy Policy, the ways in which we collect and use + your Personal Data or your choices and rights regarding such collection and use, please do not hesitate + to contact us at: +
+Effective date: Aug 15, 2026
+ ++ Welcome to OpenCode. Please read on to learn the rules and restrictions that govern your use of + OpenCode's website, inference product and hosted software offering (the "Services"). If you have + any questions, comments, or concerns regarding these terms or the Services, please contact us at: +
+ ++ Email: help@anoma.ly +
+ ++ These Terms of Use (the "Terms") are a binding contract between you and{" "} + ANOMALY INNOVATIONS, INC. ("OpenCode," "we" and "us"). Your use of the Services in any + way means that you agree to all of these Terms, and these Terms will remain in effect while you use the + Services. These Terms include the provisions in this document as well as those in the Privacy Policy{" "} + https://opencode.ai/legal/privacy-policy.{" "} + + Your use of or participation in certain Services may also be subject to additional policies, rules + and/or conditions ("Additional Terms"), which are incorporated herein by reference, and you understand + and agree that by using or participating in any such Services, you agree to also comply with these + Additional Terms. + {" "} + For clarity, our open source software that is not provided to you on a hosted basis is subject to the + open source license and terms set forth on the applicable repository where you access such open source + software, and such license and terms will exclusively govern your use of such open source software. +
+ ++ Please read these Terms carefully. They cover important information about Services provided to you and + any charges, taxes, and fees we bill you. These Terms include information about{" "} + future changes to these Terms,{" "} + automatic renewals,{" "} + limitations of liability,{" "} + a class action waiver and{" "} + resolution of disputes by arbitration instead of in court.{" "} + + PLEASE NOTE THAT YOUR USE OF AND ACCESS TO OUR SERVICES ARE SUBJECT TO THE FOLLOWING TERMS; IF YOU DO + NOT AGREE TO ALL OF THE FOLLOWING, YOU MAY NOT USE OR ACCESS THE SERVICES IN ANY MANNER. + +
+ ++ ARBITRATION NOTICE AND CLASS ACTION WAIVER: EXCEPT FOR CERTAIN TYPES OF DISPUTES + DESCRIBED IN THE ARBITRATION AGREEMENT SECTION BELOW, YOU AGREE + THAT DISPUTES BETWEEN YOU AND US WILL BE RESOLVED BY BINDING, INDIVIDUAL ARBITRATION AND YOU WAIVE YOUR + RIGHT TO PARTICIPATE IN A CLASS ACTION LAWSUIT OR CLASS-WIDE ARBITRATION. +
+ ++ OpenCode is an AI-powered coding agent that helps you write, understand, and modify code using large + language models. Certain of these large language models are provided by third parties ("Third Party + Models") and certain of these models are provided directly by us if you use the OpenCode Zen paid + offering ("Zen"). Regardless of whether you use Third Party Models or Zen, OpenCode enables you to + access the functionality of models through a coding agent running within your terminal. +
+ ++ We are constantly trying to improve our Services, so these Terms may need to change along with our + Services. We reserve the right to change the Terms at any time, but if we do, we will place a notice on + our site located at opencode.ai, send you an email, and/or notify you by some other means. +
+ ++ If you don't agree with the new Terms, you are free to reject them; unfortunately, that means you will + no longer be able to use the Services. If you use the Services in any way after a change to the Terms is + effective, that means you agree to all of the changes. +
+ ++ Except for changes by us as described here, no other amendment or modification of these Terms will be + effective unless in writing and signed by both you and us. +
+ ++ OpenCode takes the privacy of its users very seriously. For the current OpenCode Privacy Policy, please + click here{" "} + https://opencode.ai/legal/privacy-policy. +
+ ++ The Children's Online Privacy Protection Act ("COPPA") requires that online service providers obtain + parental consent before they knowingly collect personally identifiable information online from children + who are under 13 years of age. We do not knowingly collect or solicit personally identifiable + information from children under 13 years of age; if you are a child under 13 years of age, please do not + attempt to register for or otherwise use the Services or send us any personal information. If we learn + we have collected personal information from a child under 13 years of age, we will delete that + information as quickly as possible. If you believe that a child under 13 years of age may have provided + us personal information, please contact us at help@anoma.ly. +
+ ++ You represent and warrant that you are an individual of legal age to form a binding contract (or if not, + you've received your parent's or guardian's permission to use the Services and have gotten your parent + or guardian to agree to these Terms on your behalf). If you're agreeing to these Terms on behalf of an + organization or entity, you represent and warrant that you are authorized to agree to these Terms on + that organization's or entity's behalf and bind them to these Terms (in which case, the references to + "you" and "your" in these Terms, except for in this sentence, refer to that organization or entity). +
+ ++ You will only use the Services for your own internal use, and not on behalf of or for the benefit of any + third party, and only in a manner that complies with all laws that apply to you. If your use of the + Services is prohibited by applicable laws, then you aren't authorized to use the Services. We can't and + won't be responsible for your using the Services in a way that breaks the law. +
+ ++ You represent, warrant, and agree that you will not provide or contribute anything, including any + Content (as that term is defined below), to the Services, or otherwise use or interact with the + Services, in a manner that: +
+ ++ A violation of any of the foregoing is grounds for termination of your right to use or access the + Services. +
+ ++ We retain all right, title and interest in and to the Services. Except as expressly set forth herein, no + rights to the Services or Third Party Models are granted to you. +
+ ++ You may provide input to the Services ("Input"), and receive output from the Services based on the Input + ("Output"). Input and Output are collectively "Content." You are responsible for Content, including + ensuring that it does not violate any applicable law or these Terms. You represent and warrant that you + have all rights, licenses, and permissions needed to provide Input to our Services. +
+ ++ As between you and us, and to the extent permitted by applicable law, you (a) retain your ownership + rights in Input and (b) own the Output. We hereby assign to you all our right, title, and interest, if + any, in and to Output. +
+ ++ Due to the nature of our Services and artificial intelligence generally, output may not be unique and + other users may receive similar output from our Services. Our assignment above does not extend to other + users' output. +
+ ++ We use Content to provide our Services, comply with applicable law, enforce our terms and policies, and + keep our Services safe. In addition, if you are using the Services through an unpaid account, we may use + Content to further develop and improve our Services. +
+ ++ If you use OpenCode with Third Party Models, then your Content will be subject to the data retention + policies of the providers of such Third Party Models. Although we will not retain your Content, we + cannot and do not control the retention practices of Third Party Model providers. You should review the + terms and conditions applicable to any Third Party Model for more information about the data use and + retention policies applicable to such Third Party Models. +
+ ++ The Services enable you to access and use Third Party Models, which are not owned or controlled by + OpenCode. Your ability to access Third Party Models is contingent on you having API keys or otherwise + having the right to access such Third Party Models. +
+ ++ OpenCode has no control over, and assumes no responsibility for, the content, accuracy, privacy + policies, or practices of any providers of Third Party Models. We encourage you to read the terms and + conditions and privacy policy of each provider of a Third Party Model that you choose to utilize. By + using the Services, you release and hold us harmless from any and all liability arising from your use of + any Third Party Model. +
+ ++ We're always trying to improve our Services, so they may change over time. We may suspend or discontinue + any part of the Services, or we may introduce new features or impose limits on certain features or + restrict access to parts or all of the Services. +
+ ++ The Services may be free or we may charge a fee for using the Services. If you are using a free version + of the Services, we will notify you before any Services you are then using begin carrying a fee, and if + you wish to continue using such Services, you must pay all applicable fees for such Services. Any and + all such charges, fees or costs are your sole responsibility. You should consult with your +
+ ++ Certain of our Services, including Zen, may be subject to payments now or in the future (the "Paid + Services"). Please see our Paid Services page{" "} + https://opencode.ai/zen for a description of the current Paid + Services. Please note that any payment terms presented to you in the process of using or signing up for + a Paid Service are deemed part of these Terms. +
+ ++ We use a third-party payment processor (the "Payment Processor") to bill you through a payment account + linked to your account on the Services (your "Billing Account") for use of the Paid Services. The + processing of payments will be subject to the terms, conditions and privacy policies of the Payment + Processor in addition to these Terms. Currently, we use Stripe, Inc. as our Payment Processor. You can + access Stripe's Terms of Service at{" "} + https://stripe.com/us/checkout/legal and their + Privacy Policy at https://stripe.com/us/privacy. We are not + responsible for any error by, or other acts or omissions of, the Payment Processor. By choosing to use + Paid Services, you agree to pay us, through the Payment Processor, all charges at the prices then in + effect for any use of such Paid Services in accordance with the applicable payment terms, and you + authorize us, through the Payment Processor, to charge your chosen payment provider (your "Payment + Method"). You agree to make payment using that selected Payment Method. We reserve the right to correct + any errors or mistakes that the Payment Processor makes even if it has already requested or received + payment. +
+ ++ The terms of your payment will be based on your Payment Method and may be determined by agreements + between you and the financial institution, credit card issuer or other provider of your chosen Payment + Method. If we, through the Payment Processor, do not receive payment from you, you agree to pay all + amounts due on your Billing Account upon demand. +
+ ++ Some of the Paid Services may consist of an initial period, for which there is a one-time charge, + followed by recurring period charges as agreed to by you. By choosing a recurring payment plan, you + acknowledge that such Services have an initial and recurring payment feature and you accept + responsibility for all recurring charges prior to cancellation. WE MAY SUBMIT PERIODIC CHARGES (E.G., + MONTHLY) WITHOUT FURTHER AUTHORIZATION FROM YOU, UNTIL YOU PROVIDE PRIOR NOTICE (RECEIPT OF WHICH IS + CONFIRMED BY US) THAT YOU HAVE TERMINATED THIS AUTHORIZATION OR WISH TO CHANGE YOUR PAYMENT METHOD. SUCH + NOTICE WILL NOT AFFECT CHARGES SUBMITTED BEFORE WE REASONABLY COULD ACT. TO TERMINATE YOUR AUTHORIZATION + OR CHANGE YOUR PAYMENT METHOD, GO TO ACCOUNT SETTINGS{" "} + https://opencode.ai/auth. +
+ ++ Any free trial or other promotion that provides access to a Paid Service must be used within the + specified time of the trial. You must stop using a Paid Service before the end of the trial period in + order to avoid being charged for that Paid Service. If you cancel prior to the end of the trial period + and are inadvertently charged for a Paid Service, please contact us at{" "} + help@anoma.ly. +
+ ++ You're free to do that at any time; please refer to our Privacy Policy{" "} + https://opencode.ai/legal/privacy-policy, as well + as the licenses above, to understand how we treat information you provide to us after you have stopped + using our Services. +
+ ++ OpenCode is also free to terminate (or suspend access to) your use of the Services for any reason in our + discretion, including your breach of these Terms. OpenCode has the sole right to decide whether you are + in violation of any of the restrictions set forth in these Terms. +
+ ++ Provisions that, by their nature, should survive termination of these Terms shall survive termination. + By way of example, all of the following will survive termination: any obligation you have to pay us or + indemnify us, any limitations on our liability, any terms regarding ownership or intellectual property + rights, and terms regarding disputes between us, including without limitation the arbitration agreement. +
+ ++ OpenCode and its licensors, suppliers, partners, parent, subsidiaries or affiliated entities, and each + of their respective officers, directors, members, employees, consultants, contract employees, + representatives and agents, and each of their respective successors and assigns (OpenCode and all such + parties together, the "OpenCode Parties") make no representations or warranties concerning the Services, + including without limitation regarding any Content contained in or accessed through the Services, and + the OpenCode Parties will not be responsible or liable for the accuracy, copyright compliance, legality, + or decency of material contained in or accessed through the Services or any claims, actions, suits + procedures, costs, expenses, damages or liabilities arising out of use of, or in any way related to your + participation in, the Services. The OpenCode Parties make no representations or warranties regarding + suggestions or recommendations of services or products offered or purchased through or in connection + with the Services. THE SERVICES AND CONTENT ARE PROVIDED BY OPENCODE (AND ITS LICENSORS AND SUPPLIERS) + ON AN "AS-IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT + LIMITATION, IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, + OR THAT USE OF THE SERVICES WILL BE UNINTERRUPTED OR ERROR-FREE. SOME STATES DO NOT ALLOW LIMITATIONS ON + HOW LONG AN IMPLIED WARRANTY LASTS, SO THE ABOVE LIMITATIONS MAY NOT APPLY TO YOU. +
+ ++ TO THE FULLEST EXTENT ALLOWED BY APPLICABLE LAW, UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY + (INCLUDING, WITHOUT LIMITATION, TORT, CONTRACT, STRICT LIABILITY, OR OTHERWISE) SHALL ANY OF THE + OPENCODE PARTIES BE LIABLE TO YOU OR TO ANY OTHER PERSON FOR (A) ANY INDIRECT, SPECIAL, INCIDENTAL, + PUNITIVE OR CONSEQUENTIAL DAMAGES OF ANY KIND, INCLUDING DAMAGES FOR LOST PROFITS, BUSINESS + INTERRUPTION, LOSS OF DATA, LOSS OF GOODWILL, WORK STOPPAGE, ACCURACY OF RESULTS, OR COMPUTER FAILURE OR + MALFUNCTION, (B) ANY SUBSTITUTE GOODS, SERVICES OR TECHNOLOGY, (C) ANY AMOUNT, IN THE AGGREGATE, IN + EXCESS OF THE GREATER OF (I) ONE-HUNDRED ($100) DOLLARS OR (II) THE AMOUNTS PAID AND/OR PAYABLE BY YOU + TO OPENCODE IN CONNECTION WITH THE SERVICES IN THE TWELVE (12) MONTH PERIOD PRECEDING THIS APPLICABLE + CLAIM OR (D) ANY MATTER BEYOND OUR REASONABLE CONTROL. SOME STATES DO NOT ALLOW THE EXCLUSION OR + LIMITATION OF INCIDENTAL OR CONSEQUENTIAL OR CERTAIN OTHER DAMAGES, SO THE ABOVE LIMITATION AND + EXCLUSIONS MAY NOT APPLY TO YOU. +
+ ++ You agree to indemnify and hold the OpenCode Parties harmless from and against any and all claims, + liabilities, damages (actual and consequential), losses and expenses (including attorneys' fees) arising + from or in any way related to any claims relating to (a) your use of the Services, and (b) your + violation of these Terms. In the event of such a claim, suit, or action ("Claim"), we will attempt to + provide notice of the Claim to the contact information we have for your account (provided that failure + to deliver such notice shall not eliminate or reduce your indemnification obligations hereunder). +
+ ++ You may not assign, delegate or transfer these Terms or your rights or obligations hereunder, or your + Services account, in any way (by operation of law or otherwise) without OpenCode's prior written + consent. We may transfer, assign, or delegate these Terms and our rights and obligations without + consent. +
+ ++ These Terms are governed by and will be construed under the Federal Arbitration Act, applicable federal + law, and the laws of the State of Delaware, without regard to the conflicts of laws provisions thereof. +
+ ++ Please read the following ARBITRATION AGREEMENT carefully because it requires you to arbitrate certain + disputes and claims with OpenCode and limits the manner in which you can seek relief from OpenCode. Both + you and OpenCode acknowledge and agree that for the purposes of any dispute arising out of or relating + to the subject matter of these Terms, OpenCode's officers, directors, employees and independent + contractors ("Personnel") are third-party beneficiaries of these Terms, and that upon your acceptance of + these Terms, Personnel will have the right (and will be deemed to have accepted the right) to enforce + these Terms against you as the third-party beneficiary hereof. +
+ ++ The parties shall use their best efforts to settle any dispute, claim, question, or disagreement arising + out of or relating to the subject matter of these Terms directly through good-faith negotiations, which + shall be a precondition to either party initiating arbitration. If such negotiations do not resolve the + dispute, it shall be finally settled by binding arbitration in New Castle County, Delaware. The + arbitration will proceed in the English language, in accordance with the JAMS Streamlined Arbitration + Rules and Procedures (the "Rules") then in effect, by one commercial arbitrator with substantial + experience in resolving intellectual property and commercial contract disputes. The arbitrator shall be + selected from the appropriate list of JAMS arbitrators in accordance with such Rules. Judgment upon the + award rendered by such arbitrator may be entered in any court of competent jurisdiction. +
+ ++ The Rules will govern payment of all arbitration fees. OpenCode will pay all arbitration fees for claims + less than seventy-five thousand ($75,000) dollars. OpenCode will not seek its attorneys' fees and costs + in arbitration unless the arbitrator determines that your claim is frivolous. +
+ ++ Either you or OpenCode may assert claims, if they qualify, in small claims court in New Castle County, + Delaware or any United States county where you live or work. Furthermore, notwithstanding the foregoing + obligation to arbitrate disputes, each party shall have the right to pursue injunctive or other + equitable relief at any time, from any court of competent jurisdiction, to prevent the actual or + threatened infringement, misappropriation or violation of a party's copyrights, trademarks, trade + secrets, patents or other intellectual property rights. +
+ ++ YOU AND OPENCODE WAIVE ANY CONSTITUTIONAL AND STATUTORY RIGHTS TO GO TO COURT AND HAVE A TRIAL IN FRONT + OF A JUDGE OR JURY. You and OpenCode are instead choosing to have claims and disputes resolved by + arbitration. Arbitration procedures are typically more limited, more efficient, and less costly than + rules applicable in court and are subject to very limited review by a court. In any litigation between + you and OpenCode over whether to vacate or enforce an arbitration award, YOU AND OPENCODE WAIVE ALL + RIGHTS TO A JURY TRIAL, and elect instead to have the dispute be resolved by a judge. +
+ ++ ALL CLAIMS AND DISPUTES WITHIN THE SCOPE OF THIS ARBITRATION AGREEMENT MUST BE ARBITRATED OR LITIGATED + ON AN INDIVIDUAL BASIS AND NOT ON A CLASS BASIS. CLAIMS OF MORE THAN ONE CUSTOMER OR USER CANNOT BE + ARBITRATED OR LITIGATED JOINTLY OR CONSOLIDATED WITH THOSE OF ANY OTHER CUSTOMER OR USER. If however, + this waiver of class or consolidated actions is deemed invalid or unenforceable, neither you nor + OpenCode is entitled to arbitration; instead all claims and disputes will be resolved in a court as set + forth in (g) below. +
+ ++ You have the right to opt out of the provisions of this Section by sending written notice of your + decision to opt out to the following address: 2443 Fillmore St #380-6343, San Francisco, CA 94115, + United States postmarked within thirty (30) days of first accepting these Terms. You must include (i) + your name and residence address, (ii) the email address and/or telephone number associated with your + account, and (iii) a clear statement that you want to opt out of these Terms' arbitration agreement. +
+ ++ If you send the opt-out notice in (f), and/or in any circumstances where the foregoing arbitration + agreement permits either you or OpenCode to litigate any dispute arising out of or relating to the + subject matter of these Terms in court, then the foregoing arbitration agreement will not apply to + either party, and both you and OpenCode agree that any judicial proceeding (other than small claims + actions) will be brought in the state or federal courts located in, respectively, New Castle County, + Delaware, or the federal district in which that county falls. +
+ ++ If the prohibition against class actions and other claims brought on behalf of third parties contained + above is found to be unenforceable, then all of the preceding language in this Arbitration Agreement + section will be null and void. This arbitration agreement will survive the termination of your + relationship with OpenCode. +
+ ++ You will be responsible for paying, withholding, filing, and reporting all taxes, duties, and other + governmental assessments associated with your activity in connection with the Services, provided that + the OpenCode may, in its sole discretion, do any of the foregoing on your behalf or for itself as it + sees fit. The failure of either you or us to exercise, in any way, any right herein shall not be deemed + a waiver of any further rights hereunder. If any provision of these Terms are found to be unenforceable + or invalid, that provision will be limited or eliminated, to the minimum extent necessary, so that these + Terms shall otherwise remain in full force and effect and enforceable. You and OpenCode agree that these + Terms are the complete and exclusive statement of the mutual understanding between you and OpenCode, and + that these Terms supersede and cancel all previous written and oral agreements, communications and other + understandings relating to the subject matter of these Terms. You hereby acknowledge and agree that you + are not an employee, agent, partner, or joint venture of OpenCode, and you do not have any authority of + any kind to bind OpenCode in any respect whatsoever. +
+ ++ Except as expressly set forth in the section above regarding the arbitration agreement, you and OpenCode + agree there are no third-party beneficiaries intended under these Terms. +
+{i18n.t("zen.hero.body")}
++ {i18n.t("zen.pricing.title")} {i18n.t("zen.pricing.fee")} +
+{i18n.t("zen.pricing.body")}
+{i18n.t("zen.problem.body")}
+{i18n.t("zen.problem.subtitle")}
+{i18n.t("zen.how.body")}
++ {i18n.t("zen.privacy.beforeExceptions")}{" "} + {i18n.t("zen.privacy.exceptionsLink")}. +
+