# Current Routing Flow
This document records the current OpenSpace routing setup for this local environment.
## Effective Split Routing
- Main LLM:
- model: `gpt-5.4`
- API base: `http://127.0.0.1:8080/v1`
- source: `OPENSPACE_LLM_*`
- Skill embeddings:
- backend: `local`
- model: `BAAI/bge-small-en-v1.5`
- source: `OPENSPACE_SKILL_EMBEDDING_*`
This means:
- normal OpenSpace generation and tool-calling still use the OpenAI-compatible provider path
- skill-router semantic re-rank does not depend on remote `/v1/embeddings`
- Codex Desktop main session remains isolated from the sidecar/provider env
## Flow 1: OpenSpace CLI
```mermaid
flowchart LR
A["User runs ./scripts/openspace.sh"] --> B["Load openspace/.env"]
B --> C["Set OPENSPACE_LLM_*"]
B --> D["Set OPENSPACE_SKILL_EMBEDDING_*"]
C --> E["LLM client"]
D --> F["SkillRanker"]
E --> G["sub2api / local OpenAI-compatible gateway
http://127.0.0.1:8080/v1"]
F --> H["fastembed local model
BAAI/bge-small-en-v1.5"]
G --> I["GroundingAgent execution"]
H --> J["BM25 + vector prefilter"]
J --> I
```
## Flow 2: Codex Desktop With OpenSpace Sidecar
```mermaid
flowchart LR
A["User runs ./scripts/codex-desktop-evolution app"] --> B["Create isolated CODEX_HOME overlay"]
B --> C["Main Codex Desktop session"]
B --> D["openspace_evolution MCP sidecar"]
C --> E["Normal Codex subscription/API workflow"]
D --> F["OpenSpace evolution server"]
F --> G["OPENSPACE_LLM_* -> gpt-5.4 via http://127.0.0.1:8080/v1"]
F --> H["OPENSPACE_SKILL_EMBEDDING_* -> local fastembed"]
G --> I["Evolution / skill capture"]
H --> I
```
## Flow 3: Skill Routing Internals
```mermaid
flowchart LR
A["Task text"] --> B["Early abstain check"]
B --> C["BM25 rough rank"]
C --> D["Local embedding re-rank"]
D --> E["Top candidate skills"]
E --> F["Optional LLM selection"]
F --> G["Injected / selected skills"]
```
## Key Config Inputs
- `OPENSPACE_LLM_API_KEY`
- `OPENSPACE_LLM_API_BASE`
- `OPENSPACE_LLM_OPENAI_STREAM_COMPAT`
- `OPENSPACE_SKILL_EMBEDDING_BACKEND`
- `OPENSPACE_SKILL_EMBEDDING_MODEL`
## Operational Notes
- If the provider does not expose `/v1/embeddings`, the main LLM path still works.
- With the current setup, skill embeddings stay local, so router prefilter remains available.
- If needed later, skill embeddings can be moved to a separate remote endpoint by setting:
- `OPENSPACE_SKILL_EMBEDDING_BACKEND=remote`
- `OPENSPACE_SKILL_EMBEDDING_API_KEY`
- `OPENSPACE_SKILL_EMBEDDING_API_BASE`
- `OPENSPACE_SKILL_EMBEDDING_MODEL`