Find your connection.
Guidance for saving a profile and starting a Studio session.
The Studio command line
Keep the tools you know. Bring your model connections and personal memory with you.
brew install jestatsio/tap/jeje 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.
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 --helpVersion 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.
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 setupGuidance for saving a profile and starting a Studio session.
Inspect saved connections and check service access.
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.
je setup --client claude
je setup --client codex
je setup --dry-runUse --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.
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 studioThe 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.
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
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.
Use a profile with a Claude-compatible route enabled by your operator.
je connect claude --profile studioje 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.
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-codexAt 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.
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 studioFor 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
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-memoryThe 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.
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
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-nativeUse 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
Run je --help or add --help to a command for its complete options.
| Command | What it does |
|---|---|
je setup | Detect installed clients and confirm each native Studio plugin installation. |
je setup --client codexje setup --client claude | Set up only the selected client. |
je setup --dry-run | Preview the intended setup without applying it. |
je setup --yes | Accept the setup prompts without interactive confirmation. |
je setup --remove | Remove Studio's native plugin while keeping its marketplace entry. |
| Command | What it does |
|---|---|
je profile add NAME | Save a model endpoint, permitted model, and personal key. Requires --endpoint and --model. |
je profile listje profile show NAME | Inspect saved profiles without displaying their keys. |
je profile remove NAME | Remove the local profile. Server access is not revoked. |
je doctor --profile NAME | Check authentication and model availability without inference. |
je connect claude --profile NAMEje connect codex --profile NAME | Launch a client with the selected connection. Use a tested route for that client. |
je memory add NAME --endpoint URL | Save a separate memory connection and privately enter its token. |
je memory listje memory show NAMEje memory check NAMEje memory remove NAME | Inspect, check, or remove a local memory connection. These commands do not delete service memories. |
je ollama profile add NAME | Save a native Ollama connection with its own --endpoint, --model, and key. Native profiles also support list, show, and remove. |
je ollama --profile NAME checkje ollama --profile NAME | Check native model discovery or start native CLI chat. |
je export --profile NAME | Prepare desktop and editor settings for review. |
je run --profile NAME -- COMMAND | Pass 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
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.
You choose the profile and whether to attach memory. Native client instructions, hooks, history behavior, and approval controls still apply.
Your operator manages service access, logging, and retention. Confirm those policies before sending sensitive material. The public client does not provide a Studio account.
The default directory remains ~/.config/je-gateway for compatibility, or je-gateway under XDG_CONFIG_HOME. Existing profiles do not need to move.
| Setting | Precedence |
|---|---|
je --state-dir PATH … | An explicit command-level location takes precedence. |
JE_STUDIO_HOME | The preferred environment override. |
JE_GATEWAY_HOME | The 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
brew update
brew upgrade jeStudio 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.
je setup --remove
brew uninstall jeRemove 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
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.
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.
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.
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.
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.
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.