AIMO — Pooled AI for VS Code
An in-editor coding agent on your organisation's Bosphorus platform. AIMO chats
with the models you are permitted, reads and edits your workspace, runs commands,
reaches the platform's tool servers, and keeps your secrets in your own vault —
asking before it changes anything, and handing your secrets to commands and tools
rather than to the model.
Every request is yours: it is signed in as you, counted against your quota and
rate limits, checked by your organisation's policies, and listed on the platform's
activity and usage pages under your name.
AIMO needs a Bosphorus installation to talk to. Without one there is nothing for it
to sign in to. Installation guide and downloads:
https://bosphorus.morten.com.tr/workspaces/aimo-for-vs-code/
Before you start
- VS Code 1.85 or later.
- Your organisation's gateway address, for example
https://ai.corp.example.
Your administrator gives it to you.
- Your corporate account on the identity provider the platform uses.
- A network path to the gateway. On many installations it answers only on the
company network or over VPN.
Connect to your gateway
Run AIMO: Set Gateway URL from the Command Palette and enter the address your
administrator gave you. Nothing else works until this is set. The address is kept
in your own user settings; a repository's settings cannot change it.
Sign in
AIMO signs you in with the identity provider the platform itself uses — Microsoft
Entra ID on some installations, an OpenID Connect provider such as Keycloak on
others. It learns which from the gateway, so there is nothing more to configure.
- Run AIMO: Sign in. A short code is copied to your clipboard and the sign-in
page opens.
- Paste the code and finish the sign-in in the browser.
- AIMO exchanges that sign-in for your own platform key and keeps it in VS Code's
secret storage.
Signing in on a second machine rotates the key; the first machine gets a new one by
itself on its next request. AIMO: Sign out removes the key from this machine.
Chat
| You want to |
Do this |
| Ask about the code you are looking at |
Just ask. The open file's path and your selection travel with the message as chips above the message box; click a chip to leave it out |
| Attach more files |
+ File, or right-click a file in the Explorer ▸ Add File to AIMO Chat |
| Show it a screenshot |
Paste it into the message box (Cmd+V / Ctrl+V), Shift-drag an image onto the chat, pick a PNG/JPEG/GIF/WebP with + File, or on macOS Screenshot (AIMO: Attach Screenshot). See Images |
| Explain or fix a piece of code |
Select it, right-click ▸ AIMO ▸ Explain This / Fix This |
| See what an edit would change |
The approval card shows the diff; Open diff opens it in the diff editor |
| Allow everything for one turn |
Allow all on an approval card. A command that receives vault values is still asked about, every time |
| Take a turn's edits back |
Undo on the notice that follows the turn, or /undo |
| Continue yesterday's chat |
AIMO: Chat History, or /history |
| Start another chat without losing this one |
New Chat (or /new) — opens a tab on the same folder |
| See every open chat and switch, or move the sidebar chat into a tab |
AIMO: Switch Chat…, or /chats |
| Run a chat on a different folder |
AIMO: New Chat on Another Folder…, or /tab |
| Free up context |
/compact |
Images
Up to five images go with one message, each shown as a thumbnail above the message
box; an image on its own is a message. Each is scaled to at most 1568 px on its long
edge before it is sent, so a full-screen screenshot costs about 1,700 tokens of the
model's window.
- The model has to be able to see. Select Model marks the models the gateway
confirms as
vision. Sent to a model that is not confirmed, the image goes anyway
with a one-time notice; if the model refuses it, the image is attached again so
you can pick another model and send.
- Dropping onto the chat needs Shift held while you drop. Files from the
Explorer get the same checks as + File.
- Screenshot (macOS) runs the system capture tool: drag a region, Space for a
window, Esc to cancel. macOS may ask you to allow VS Code under System
Settings ▸ Privacy & Security ▸ Screen Recording. Elsewhere, paste a screenshot.
- Images are not kept with a stored chat — only thumbnails.
Type / in the message box for the commands: /new, /model, /tools, /vault,
/compact, /undo, /history, /tab, /chats, /clear, /status, /help.
Shortcuts: Ctrl+Alt+A (macOS Ctrl+Cmd+A) opens the chat, Ctrl+Alt+L
(macOS Ctrl+Cmd+L) adds the selection to it. In the message box, Enter sends,
Shift+Enter starts a new line, ↑ recalls your last message and Esc stops
an answer.
What the agent can do
| Tool |
What it does |
Asks first |
read_file |
read a file, optionally a line range |
only for files that usually hold credentials |
list_directory |
list a folder |
no |
find_files |
find files by name or glob |
no |
search_text |
search file contents |
no |
get_diagnostics |
the problems the editor reports |
no |
write_file |
create or overwrite a file |
yes, with the diff |
str_replace |
replace one exact passage |
yes, with the diff |
run_command |
run a shell command in the workspace |
yes |
mcp_list_servers, mcp_search_tools |
find a tool on the platform's tool servers |
no |
mcp_call_tool |
run one |
yes, unless the server marks the tool read-only |
Every file path is contained to the workspace folder, judged by where it points: a
link inside the workspace that leads out of it is outside. Stopping a turn, or a
command's timeout, ends the command and everything it started.
Files that usually hold credentials — .env, private keys, cluster
credentials, *.tfvars, secrets.yaml and the like — are read only after you
agree, and a search that matches inside one says so without showing the line.
Models and the context window
Leave aimo.model empty and AIMO uses the model the platform recommends for you.
AIMO: Select Model lists every model you may use with what it is confirmed to
do and the size of its context window.
AIMO sizes every request to the model's window before sending it. When a
conversation outgrows the window, older tool output is shortened first, then whole
older turns are dropped; a notice tells you when that happened, and the gauge under
the message box shows how full the window is.
The platform's MCP tool servers reach you through the gateway's governed relay.
AIMO never learns a server's address or credentials.
- On demand is how every server works unless you decide otherwise. The model is
given three small tools — list the servers, search for a tool, call a tool — and
looks up what it needs. The size of the registry costs nothing.
- Pinned servers load their tools into every request. Pin the one or two you
use all day with AIMO: Choose Tool Servers, which shows what each costs.
Vault
Where your installation keeps people's keys in OpenBao, AIMO works with your own
vault there. It hands values to your tools, terminals and commands, and never puts
one in a chat, a log or a stored conversation.
- AIMO Vault: Sign in to the Vault opens your browser at the identity provider
and comes back to
http://localhost:8250.
- Tool-server variables: a tool server that needs something of yours — an API
key, a token — reads it from your vault on every call you make to it.
- Workspace vault variables (
aimo.vault.env) map environment variables to
places in the vault. The mapping holds references, not values, so it can be
committed and every developer gets their own value. The model is told the names;
a value a command prints as it is reaches the model as [vault:NAME].
The vault address is derived from the gateway address. Set aimo.vault.address if
yours is elsewhere.
Settings
Settings marked user can be set in your own settings only. A repository's
.vscode/settings.json cannot set them, so opening a project cannot redirect your
sign-in, your key or your secrets, or switch the approvals off.
| Setting |
Default |
Notes |
aimo.gatewayUrl |
(empty) |
Your organisation's gateway. user |
aimo.model |
(empty) |
Empty = the platform's default for you |
aimo.autoApproveTools |
false |
Skip approvals. Ignored in Restricted Mode. user |
aimo.maxAgentSteps |
25 |
Tool rounds per turn |
aimo.maxStoredChats |
100 |
Chats kept per workspace for /history; 0 keeps every chat |
aimo.includeEditorContext |
true |
Send the open file's path and your selection |
aimo.protectSensitiveFiles |
true |
Ask before reading credential files. user |
aimo.mcpEnabled |
true |
Use the platform's tool servers |
aimo.mcp.pinnedServers |
[] |
Servers whose tools load directly |
aimo.vault.address |
(empty) |
Empty = derived from the gateway address. user |
aimo.vault.env |
{} |
The workspace's vault variables |
aimo.allowInsecureTls |
false |
Accept a self-signed gateway or vault certificate. user |
Troubleshooting
| What you see |
What to do |
| No AIMO icon after installing |
VS Code installs extensions per profile, and in a remote window (SSH, WSL, a container) the extension runs on the remote side. Install it again from that window with Install from VSIX…, or pass --profile "Your Profile" to code --install-extension |
could not reach …/api/identity/config |
The gateway address is not set, is wrong, or cannot be reached from here. Run AIMO: Set Gateway URL and check you are on the right network |
port 8250 is busy when signing in to the vault |
Another vault sign-in is waiting on that port. Finish or cancel it |
| The vault sign-in page opens but nothing happens afterwards |
You are in a remote window (SSH, container): forward port 8250 to your machine, or sign in from a local window |
| A tool server is missing |
You have not been granted it, or your team may not use it. Ask your administrator |
| Anything else |
AIMO: Show Log |