Studio / Docs

The Studio command line

Your tools.
Your context.
Your Studio.

Keep the tools you know. Bring your model connections and personal memory with you.

Start in your terminalmacOS · Apple silicon
brew install jestatsio/tap/je
Then connect your toolsje setupGet started
Familiar clientsCodex, Claude Code, Ollama
Personal contextMemory you can inspect
Explicit connectionsYou choose each session

je is the client for J&E Studio. It saves your connections and helps your existing tools use them. The Studio service is private and operator-managed. Installing the client does not create an account or grant service access.

01

Install once. Start where you are.

Install with Homebrew on an Apple silicon Mac. The packaged client includes its runtime, so you do not need to install or manage Python.

brew install jestatsio/tap/je
je --help
Initial release

Version 0.2.0 is built for macOS on Apple silicon and has been tested on macOS 27.2. Other macOS versions and platforms are not yet qualified. Release downloads and notes

Install the native Codex, Claude Code, or Ollama client separately. Before connecting to Studio, ask your operator for the service endpoint, a permitted model name, and your personal key.

02

Make Studio available in your tools.

Run setup to detect installed Codex and Claude Code CLIs. It asks before installing the Studio plugin through each client's native plugin manager.

je setup
connect

Find your connection.

Guidance for saving a profile and starting a Studio session.

status

Check your setup.

Inspect saved connections and check service access.

memory

Bring useful context.

Guidance for a separate, optional memory connection.

Setup installs guidance for the client. It does not install Codex or Claude Code, switch your model, attach an MCP server, or add hooks. Use the connection steps below when you want a Studio session.

Choose a client or preview the changes
je setup --client claude
je setup --client codex
je setup --dry-run

Use --yes to accept installation without the confirmation prompts. Use --remove to remove the Studio plugin while keeping its marketplace entry. The command reference lists every setup option.

03

Save your personal connection.

A profile gives a service endpoint, model, and personal key a name you can use again. Replace the example address and YOUR_MODEL_NAME with the values from your operator.

je profile add studio \
  --endpoint https://models.example.test \
  --model YOUR_MODEL_NAME

je doctor --profile studio

The client asks for your key privately in the terminal. Keep the key out of command arguments. The default connection check verifies authentication and model availability without generating a response.

One profile per tested route

Claude Code and Codex use different model protocols. A working model listing does not establish compatibility with either client. Use the route and profile settings your operator has tested for your chosen tool.

List your profiles with je profile list, or inspect one with je profile show studio. Neither command displays its key. To update a profile, repeat je profile add with --replace.

Work in your own environment

A Studio session, in a familiar client.

Open a terminal in the project you want to work on. The launcher applies your saved connection to that session while keeping the client's own tools, instructions, and approval controls.

Claude Code

Use a profile with a Claude-compatible route enabled by your operator.

je connect claude --profile studio

je checks the connection and supplies temporary session settings. If an existing sign-in or provider conflicts with that route, the launch stops so you can resolve it.

Codex

Use an operator-tested Responses route and a reviewed model catalog matched to the exact installed Codex version and configured context limit. Replace every uppercase placeholder below.

je profile add studio-codex \
  --endpoint https://models.example.test \
  --model YOUR_CODEX_MODEL \
  --context-window CONTEXT_TOKENS \
  --codex-catalog /absolute/path/to/reviewed-catalog.json \
  --codex-version YOUR_CODEX_VERSION

je connect codex --profile studio-codex

At launch, je checks the executable version, catalog contents, selected model, and context against the saved binding. Changing the profile's context does not enlarge the server's limit. A generic model route is not a qualified Codex connection.

Pass additional supported client arguments after --. If a client cannot be found, use --executable /absolute/path/to/client. Organization-managed settings may restrict custom providers.

Desktop apps, editors, and other clients

Generate configuration fragments for review with je export. Exporting does not activate or replace an app's settings. Read the generated README and confirm compatibility with the app's installed version.

je export --profile studio

For another client that reads OpenAI environment variables, use je run --profile studio -- COMMAND. This passes the connection to the child process. It does not translate protocols or attach shared memory.

Context you control

Keep useful knowledge between sessions.

Studio memory holds preferences and project facts across connected tools, separately for each person. Use the Studio memory page to inspect saved information, edit it, review earlier versions, or decide what to forget.

Memory is optional and uses a separate personal token. Save the complete MCP endpoint supplied by your operator, including its path.

je memory add studio-memory \
  --endpoint https://memory.example.test/mcp
je memory check studio-memory

je connect claude --profile studio \
  --memory-profile studio-memory

The check lists available tools without reading saved memories or requesting inference. Saving a connection does not attach it automatically. Select --memory-profile for each supported session.

Current memory support

Codex attachment currently requires version 0.166.0-alpha.5.1 and its own tested model profile. Automatic saves remain unreliable in the pilot. Review what is saved rather than assuming every preference was remembered. Native Ollama and desktop exports do not attach memory through this client.

Deleted memories leave recall immediately and remain in trash for 30 days. Removing a local memory connection does not delete saved memories or revoke the service token.

Native command-line chat

Use Ollama with its own connection.

The native Ollama CLI uses a separate endpoint, model name, and personal key. Install Ollama separately and request these values from your operator. A model gateway profile is not a substitute.

je ollama profile add studio-native \
  --endpoint https://native.example.test/ollama \
  --model YOUR_NATIVE_MODEL

je ollama --profile studio-native check
je ollama --profile studio-native

Use the complete native API root, including any /ollama prefix. Do not append /api or use the gateway's /v1 endpoint. The check lists authorized models without starting inference.

During a session, a temporary loopback relay supplies the saved credential upstream and closes when the CLI exits. Global Ollama routing settings stay unchanged. The shared connection supports chat and model inspection. Model downloads and management remain the operator's responsibility.

This integration covers the native CLI. It does not configure the Ollama desktop app or attach shared memory.

Keep this nearby

The command reference.

Run je --help or add --help to a command for its complete options.

Setup options
CommandWhat it does
je setupDetect installed clients and confirm each native Studio plugin installation.
je setup --client codex
je setup --client claude
Set up only the selected client.
je setup --dry-runPreview the intended setup without applying it.
je setup --yesAccept the setup prompts without interactive confirmation.
je setup --removeRemove Studio's native plugin while keeping its marketplace entry.
Connections and sessions
CommandWhat it does
je profile add NAMESave a model endpoint, permitted model, and personal key. Requires --endpoint and --model.
je profile list
je profile show NAME
Inspect saved profiles without displaying their keys.
je profile remove NAMERemove the local profile. Server access is not revoked.
je doctor --profile NAMECheck authentication and model availability without inference.
je connect claude --profile NAME
je connect codex --profile NAME
Launch a client with the selected connection. Use a tested route for that client.
je memory add NAME --endpoint URLSave a separate memory connection and privately enter its token.
je memory list
je memory show NAME
je memory check NAME
je memory remove NAME
Inspect, check, or remove a local memory connection. These commands do not delete service memories.
je ollama profile add NAMESave a native Ollama connection with its own --endpoint, --model, and key. Native profiles also support list, show, and remove.
je ollama --profile NAME check
je ollama --profile NAME
Check native model discovery or start native CLI chat.
je export --profile NAMEPrepare desktop and editor settings for review.
je run --profile NAME -- COMMANDPass OpenAI connection variables to another client process.

je doctor --profile NAME --probe sends small model requests and can consume inference resources. Add --harness claude or --harness codex to select protocol checks. A passing probe does not qualify every native client feature.

Know what is saved

Personal credentials. Explicit access.

On your computer

Keys and tokens are saved in owner-only local files. This is file storage, not macOS Keychain storage. Model, memory, and native Ollama profiles are separate.

In your session

You choose the profile and whether to attach memory. Native client instructions, hooks, history behavior, and approval controls still apply.

At your Studio

Your operator manages service access, logging, and retention. Confirm those policies before sending sensitive material. The public client does not provide a Studio account.

Where profiles live

The default directory remains ~/.config/je-gateway for compatibility, or je-gateway under XDG_CONFIG_HOME. Existing profiles do not need to move.

SettingPrecedence
je --state-dir PATH …An explicit command-level location takes precedence.
JE_STUDIO_HOMEThe preferred environment override.
JE_GATEWAY_HOMEThe legacy override, used when JE_STUDIO_HOME is unset.

For noninteractive model setup, use --key-file with an owner-only regular file or --key-env naming an already-set environment variable. Memory setup uses --token-file or --token-env. Never put a credential's value directly in a command argument.

Keep your setup current

Updates and a clean way out.

Update the client

brew update
brew upgrade je

Studio plugins update through each client's native plugin manager. Check the release notes before upgrading. A Codex version change may require a newly reviewed catalog and an updated profile binding.

Remove the client

je setup --remove
brew uninstall je

Remove the plugins before uninstalling the command-line client. Your saved profiles and native marketplace entries remain. Removing a profile, plugin, or local installation does not revoke a server credential. Ask your operator to revoke access when needed.

When something needs attention

Start with the connection.

Setup cannot find Codex or Claude Code

Install the native client separately and confirm its command works in your terminal. Run je setup --dry-run to inspect detection, then try setup for that client. Setup does not download the client for you.

The key is rejected or the model is missing

Run je doctor --profile NAME and confirm the endpoint and permitted model name with your operator. Inspect the saved values with je profile show NAME. Replace the profile explicitly if its key or connection has changed.

Codex reports a version or catalog mismatch

Match the installed Codex version, model, context limit, and reviewed catalog to the saved profile. Ask the operator to review changed catalog contents before replacing the binding. A successful model listing does not remove this requirement.

Memory is saved but not available in the session

Run je memory check NAME, then launch a supported client with --memory-profile NAME. Saving a connection or installing the plugin does not attach memory automatically. Verify the supported Codex version when using Codex.

Ollama cannot find the expected model

Check the separate native profile with je ollama --profile NAME check. Use the operator's native model name and full API root. Gateway aliases and gateway credentials do not automatically work with the native service.

A desktop export has not changed the app

That is expected. Exports create files for review, without activating them. Read the generated README and apply only the relevant settings through the app's supported configuration workflow.

For a connection problem, contact your Studio operator. For a client issue, open an issue with the command, installed versions, and error text. Leave out credentials and private memory contents.