Remote development for AI agents · Beta

Your agent.
A workspace of its own.

From Codex, Cursor, or Claude Code, Flex opens an isolated workspace for your real application, runs the stack, implements the change, and returns a live preview. Keep iterating in the same conversation, then create a pull request when you are satisfied.

✓ GitHub + Hosted Apps ✓ Tenant-isolated ✓ Review before pull request
A change, in progressIllustrative example
“Add a billing status filter and make overdue accounts easy to spot.”

Agent activity

  1. 01

    Workspace ready

    Real source. Isolated runtime.

  2. 02

    Application running

    One preview URL as files change.

  3. 03

    Ready for your review

    Nothing sent for review yet.

Account health

A clearer view.

Overdue accounts38

Billing status: overdue

Northstar Labs14 days
Acorn Systems6 days
Daybreak Studio2 days

Live preview updated

Ask for another change. This workspace stays open.

0

local files changed

1

stable preview URL

Real stack

running in isolation

Your approval

before pull request

Why Flex

Your agent asks. Flex does the heavy lifting.

Your coding agent remains the familiar control surface. Flex supplies the environment, the implementation runtime, the live application, and the safe path to review.

A real running application

Flex checks out the registered source, starts its configured runtime, and gives the agent a live application—not just a diff to describe.

One continuous edit loop

Follow-up requests return to the same remote workspace and update the same preview URL, so the conversation and the result stay together.

A controlled handoff

See changed files, failures, and preview state first. GitHub work becomes a pull request only after you explicitly ask Flex to send it for review.

The development loop

From request to review without leaving your agent.

No local dependency setup. No background branch management. No guessing whether the application still runs. Flex makes the working result visible early and keeps it reviewable throughout the change.

  1. 1

    Describe the outcome

    Ask naturally from Codex, Cursor, or Claude Code. The agent finds only sources registered to your Flex tenant.

  2. 2

    Flex opens the workspace

    A resident runtime agent implements the request inside an isolated environment while your checkout remains untouched.

  3. 3

    Review the live result

    Open the stable preview URL early. Ask for follow-up changes and watch that same application update in place.

  4. 4

    Send it for review

    When the result is ready, explicitly ask Flex to create or return the GitHub pull request. Until then, it remains draft work.

Built for real product work

More than a remote sandbox.

Flex joins the parts that normally break the flow: tenant-safe source discovery, runtime configuration, live preview routing, contextual follow-up work, secrets, and the final review boundary.

GitHub repositories Flex Hosted Apps Node · .NET · Python · PHP

01 · Source-aware

The right code, already scoped

Agents see registered repositories and ready Hosted Apps for the authenticated tenant—not arbitrary clone URLs.

02 · Runtime-aware

The actual stack, kept running

Flex uses the configured command, port, language runtime, resource profile, setup instructions, and agent notes.

03 · Secret-safe

Values bypass the model

For a missing repository secret, the agent prepares a single-use upload command. You enter the value directly into your terminal.

04 · Review-aware

Draft until you say otherwise

Preview and iterate first. GitHub pull-request creation is a separate, explicit action rather than an automatic side effect.

Connect

Use the coding agent you already have.

One remote MCP endpoint gives Codex, Cursor, or Claude Code the same tenant-scoped Flex development loop.

Connect with OAuth, or create a manual access token.

OAuth clients open a Flex consent screen and keep a refreshable credential in their own secure store. Manual tokens remain available for clients that do not support OAuth. Their one-click default follows your current tenant role; open Advanced permissions to reduce it—for example, select only ManageWorkspaces for a workspace-only token. Add ManageRepositories, SubmitReviews, or PrepareSecrets only when the agent needs those capabilities. A token can never receive permissions above its creator's current role.

CX

Codex

~/.codex/config.toml

+
[mcp_servers.flex]

url = "https://flexenv.com/mcp/agents"

default_tools_approval_mode = "writes"

Then authorize Flex in your browser:

codex mcp login flex
Read the Codex MCP documentation →
CU

Cursor

~/.cursor/mcp.json

+
export FLEX_API_KEY="..."



{

  "mcpServers": {

    "flex": {

      "url": "https://flexenv.com/mcp/agents",

      "headers": { "Authorization": "Bearer ${env:FLEX_API_KEY}" }

    }

  }

}
Read the Cursor MCP documentation →
CC

Claude Code

.mcp.json

+
export FLEX_API_KEY="..."



{

  "mcpServers": {

    "flex": {

      "type": "http",

      "url": "https://flexenv.com/mcp/agents",

      "headers": { "Authorization": "Bearer ${FLEX_API_KEY}" }

    }

  }

}
Read the Claude Code MCP documentation →
Authentication: Flex supports OAuth browser login with PKCE and rotating refresh tokens, plus personal role-capped access tokens for clients that need manual bearer authentication. Never commit a manual token to the repository.

Agent guidance

Make the remote loop the natural default.

Flex advertises remote-first guidance when the MCP connection starts. You can reinforce it in your repository and let the agent configure the registered runtime without exposing secret values.

Repository instructions

AGENTS.md, CLAUDE.md, or a Cursor project rule

+
## Flex development



When the user asks for a live preview or asks to work in Flex:



- Inspect this checkout read-only for context; do not edit it.

- Use the Flex MCP tools to find the registered source.
- Use detailed, evidence-based product and repository descriptions to make source
  discovery and preview-product selection reliable.
- Start one remote workspace and return its preview URL early.

- Make follow-up changes in that same workspace.

- If startup fails or stalls, inspect the failure reason and bounded workspace

  logs before retrying. Never repeat credential-like diagnostic content.

- If a repository secret is missing, prepare a one-time upload command.

  Never ask the user to paste the secret into chat or run the command.

- Send GitHub work for pull-request review only after an explicit request.

Source and product configuration

Descriptions, runtime, resources, setup, and agent notes

+

With ManageRepositories, the agent can update product and repository descriptions as well as a registered repository's preview command, port, verified language runtime, compute resource profile, setup instructions, and agent notes. Descriptions should be detailed and grounded in the source: include purpose, users, owned capabilities, relevant stack, and boundaries so Flex can discover the right source and choose the right preview product. Verified runtime aliases are auto, node, dotnet, python, php, and vibecore. Secret values are never accepted by these tools.

Configure Acme Dashboard for Flex:
- repository description: Customer-facing React dashboard for account setup,
  billing, and usage insights; backed by the dashboard API
- product description: Self-service account platform for operations teams,
  covering onboarding, billing administration, and usage review
- preview command: npm run dev -- --host 0.0.0.0

- preview port: 5173

- runtime profile: node

- setup instructions: npm ci

- agent notes: run focused UI tests before returning the preview

Secrets without chat

The agent prepares the command. You enter the value.

When a registered GitHub repository needs a missing environment variable, Flex returns a single-use terminal command that expires after ten minutes. The value streams directly to Flex over HTTPS with terminal echo disabled.

  • ✓The value is not sent through the model.
  • ✓The value does not appear in the command line or shell history.
  • ✓The upload token is stored hashed, expires in ten minutes, and works once.

Your terminal

Direct to Flex
$ # Paste the one-time command returned by Flex

Value for DATABASE_URL: ********

{"configured":true}

The command contains a short-lived upload capability, but never the secret value. Treat it as sensitive until it expires.

Current beta coverage

GitHub repositories and ready Hosted Apps can run the live development loop.

GitHub repository workspaces can create pull requests. Ready Hosted Apps use tenant-private Forgejo source, and Hosted App branches remain in that private source. Repository onboarding, tenant connections, Hosted App secrets, and data-source selection remain in the authenticated Flex UI.