import { query, useParams, createAsync } from "@solidjs/router" import { createMemo, createSignal, Show } from "solid-js" import { IconCopy, IconCheck } from "~/component/icon" import { Key } from "@opencode/cloud-core/key.js" import { Billing } from "@opencode/cloud-core/billing.js" import { withActor } from "~/context/auth.withActor" import styles from "./new-user-section.module.css" const getUsageInfo = query(async (workspaceID: string) => { "use server" return withActor(async () => { return await Billing.usages() }, workspaceID) }, "usage.list") const listKeys = query(async (workspaceID: string) => { "use server" return withActor(() => Key.list(), workspaceID) }, "key.list") export function NewUserSection() { const params = useParams() const [copiedKey, setCopiedKey] = createSignal(false) const keys = createAsync(() => listKeys(params.id)) const usage = createAsync(() => getUsageInfo(params.id)) const isNew = createMemo(() => { const keysList = keys() const usageList = usage() return keysList?.length === 1 && (!usageList || usageList.length === 0) }) const defaultKey = createMemo(() => keys()?.at(-1)?.key) return (

Tested & Verified Models

We've benchmarked and tested models specifically for coding agents to ensure the best performance.

Highest Quality

Access models configured for optimal performance - no downgrades or routing to cheaper providers.

No Lock-in

Use Zen with any coding agent, and continue using other providers with opencode whenever you want.

{defaultKey()}
  1. Enable billing
  2. Run opencode auth login and select opencode
  3. Paste your API key
  4. Start opencode and run /models to select a model
) }