Studio Binding
The Studio Binding feature creates a 1:1 link between your local project directory and an Aexol Studio project. Once bound, all remote_* tools automatically derive their project context from the binding — no need to pass teamId or projectId on every single call.
How It Works
The Binding File
When you bind a project, the agent writes a .aexol/aexol.jsonc file into your project root:
{
"teamId": "tm_abc123",
"projectId": "prj_xyz789",
"name": "My SaaS App"
}
This file is:
- Human-readable — JSONC format, you can inspect it
- Git-friendly — can be committed (or gitignored) based on team preference
- Auto-discovered — the agent reads it on every tool call
Auto-Injection
When the agent calls any remote_* tool, the Studio MCP extension automatically:
- Reads
.aexol/aexol.jsoncfrom the project root - Injects
teamIdandprojectIdif not already provided - For inference/refinement tools, also injects the current session model
This means after binding, these work without extra parameters:
// Before binding — must pass projectId on every call:
remote_start_inference {
aexolContent: "...",
projectId: "prj_xyz789" // required
}
// After binding — projectId is auto-injected:
remote_start_inference {
aexolContent: "..." // projectId auto-injected from binding
}
Tools
| Tool | Purpose |
|---|---|
local_bind_project | Create a Studio binding for the current directory |
local_unbind_project | Remove the binding from the current directory |
local_get_binding | Show the current binding (projectId, teamId, name) |
Binding a Project
local_bind_project {
projectId: "prj_xyz789", // From Studio project URL
teamId: "tm_abc123", // Optional — from Studio team settings
name: "My SaaS App" // Optional — human-readable label
}
// → ✓ Bound to Studio project: My SaaS App (prj_xyz789).
// → All remote_* tools will now use this project context by default.
Unbinding
local_unbind_project {}
// → ✓ Unbound from Studio project: My SaaS App (prj_xyz789).
Binding removal is clean — the .aexol/aexol.jsonc file is deleted.
Checking the Binding
local_get_binding {}
// → {
// "teamId": "tm_abc123",
// "projectId": "prj_xyz789",
// "name": "My SaaS App"
// }
Session Model Injection
For inference and refinement tools (remote_start_inference, remote_start_from, remote_refine_*), the binding also injects the current session model:
// The agent's current model is injected as the inference model
// This ensures Studio tasks use the same model you're chatting with
The model must be a Studio built-in model (prefixed with built-in/). Custom or external models are rejected with a clear error message.
Binding Cache
Bindings are cached in-memory with file modification time tracking. Repeated reads of .aexol/aexol.jsonc within the same millisecond timestamp are served from cache — efficient even with many rapid remote_* calls.
Typical Workflow
- Create a Studio project — from the Studio UI or CLI
- Copy the project ID — from the project URL:
https://studio.aexol.com/projects/prj_xyz789 - Bind locally —
local_bind_project { projectId: "prj_xyz789" } - Work naturally — all
remote_*tools auto-use the bound project
When to Use
- Studio integration — any workflow that mixes local agent work with Studio inference, knowledge base, or file operations
- Team projects — bind once, share the
.aexol/aexol.jsoncvia git (or keep it local) - Multi-project work — switch directories to switch bindings automatically