Skip to content

Add TrustedRouter custom OpenAI client example#2252

Open
jperla wants to merge 1 commit into
browserbase:mainfrom
jperla:add-trustedrouter-custom-client-example
Open

Add TrustedRouter custom OpenAI client example#2252
jperla wants to merge 1 commit into
browserbase:mainfrom
jperla:add-trustedrouter-custom-client-example

Conversation

@jperla

@jperla jperla commented Jun 12, 2026

Copy link
Copy Markdown

Summary

  • document TrustedRouter as an OpenAI-compatible routing option
  • use https://api.trustedrouter.com/v1 as the base URL
  • include the trustedrouter/zdr model alias for privacy-sensitive agent workloads

Why

TrustedRouter is useful for workflows that involve private code, customer data, or other sensitive context. It provides open-source, verifiable attested routing and does not log prompts or outputs by default.

Validation

  • git diff --check

Summary by cubic

Add a runnable TrustedRouter custom client example and document it in the README. Enables privacy-sensitive Stagehand workflows using trustedrouter/zdr via https://api.trustedrouter.com/v1.

  • New Features
    • Added packages/core/examples/custom-client-trustedrouter.ts showing CustomOpenAIClient with trustedrouter/zdr and TRUSTEDROUTER_API_KEY.
    • Updated README with a short guide and link to the example.

Written for commit 7ddda6c. Summary will update on new commits.

Review in cubic

@changeset-bot

changeset-bot Bot commented Jun 12, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 7ddda6c

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions

Copy link
Copy Markdown
Contributor

This PR is from an external contributor and must be approved by a stagehand team member with write access before CI can run.
Approving the latest commit mirrors it into an internal PR owned by the approver.
If new commits are pushed later, the internal PR stays open but is marked stale until someone approves the latest external commit and refreshes it.

@github-actions github-actions Bot added external-contributor Tracks PRs mirrored from external contributor forks. external-contributor:awaiting-approval Waiting for a stagehand team member to approve the latest external commit. labels Jun 12, 2026
@jperla jperla marked this pull request as ready for review June 25, 2026 20:55
@jperla

jperla commented Jun 25, 2026

Copy link
Copy Markdown
Author

Marked this ready for review. This is a docs/example-only TrustedRouter setup using the OpenAI-compatible endpoint at https://api.trustedrouter.com/v1; happy to adjust the example placement if the Stagehand team prefers another docs location.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 2 files

Confidence score: 5/5

  • Automated review surfaced no issues in the provided summaries.
  • No files require special attention.
Architecture diagram
sequenceDiagram
    participant User as "User Script"
    participant Stagehand as Stagehand
    participant CustomClient as "CustomOpenAIClient"
    participant TR as "TrustedRouter API"

    Note over User,TR: NEW: TrustedRouter custom OpenAI client flow

    User->>Stagehand: new Stagehand({ llmClient: CustomOpenAIClient })
    User->>Stagehand: stagehand.init()

    User->>Stagehand: stagehand.act("click on the 'new' link")
    Stagehand->>CustomClient: send("click on the 'new' link")
    CustomClient->>TR: POST /v1/chat/completions\n(model: trustedrouter/zdr)
    TR-->>CustomClient: completion
    CustomClient-->>Stagehand: action result
    Stagehand-->>User: done

    User->>Stagehand: stagehand.extract("Extract the top 3 stories...")
    Stagehand->>CustomClient: extract request
    CustomClient->>TR: POST /v1/chat/completions\n(model: trustedrouter/zdr)
    TR-->>CustomClient: structured output
    CustomClient-->>Stagehand: parsed extraction
    Stagehand-->>User: headlines

    User->>Stagehand: stagehand.close()
Loading

Re-trigger cubic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

external-contributor:awaiting-approval Waiting for a stagehand team member to approve the latest external commit. external-contributor Tracks PRs mirrored from external contributor forks.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant