Current version: 0.10.0
Conduit Bridge is a local, OpenAI-compatible gateway for the AI tools you
already use. It gives desktop clients one loopback endpoint while keeping API
keys, authenticated coding CLIs, local models, conversations, and workspace
access under explicit local control. It runs on Windows Desktop and Linux
Desktop at 127.0.0.1:31338.
| Need | Conduit Bridge provides |
|---|---|
| One client endpoint | OpenAI-compatible chat, responses, embeddings, model discovery, metrics, events, and comparison endpoints. |
| Provider choice | Direct APIs, authenticated coding CLIs, LM Studio, and optional local BitNet inference remain separate and independently configurable. |
| Productive local work | A dashboard for chat, models, provider health, projects, budgets, pipelines, governance, and diagnostics. |
| Controlled automation | Bounded agent runs, approval gates, scoped workspaces, versioned skills, provider profiles, and usage estimates. |
| Private local state | Every platform conversation stays on this device until explicit deletion. Encrypted SQLite is the default, with backup and restore. |
| Message vault | Search every conversation message with SQLite full text or tgrep regex. Recurring local BitNet scans propose improved prompts with source links. |
| Fast code lookup | Optional local tgrep indexing with a native ripgrep fallback. No source code is sent to a model to perform a search. |
Install Node.js 24 or newer, then build and start the bridge:
npm install
npm run build
node dist/cli.js startOpen the local dashboard and select a connected model. The bridge listens only on loopback by default.
Confirm that it is healthy and inspect the model IDs available to your account:
node dist/cli.js status
curl http://127.0.0.1:31338/health
curl http://127.0.0.1:31338/v1/modelsFor a fuller first-run walkthrough, including provider setup and a first chat request, see Getting started.
The provider name describes the transport that Conduit uses. A CLI login and an API key are intentionally independent: signing in to a coding CLI never silently enables the matching paid API.
| Transport | Providers | Setup |
|---|---|---|
| Direct API | claude-api, codex-api, gemini-api, openrouter-api, perplexity-api |
Save a key through Settings or set the documented environment variable. |
| Coding CLI | cli-claude, cli-codex, cli-gemini, cli-grok |
Install and authenticate the provider's official CLI as the same desktop user. |
| Local | lmstudio, bitnet |
LM Studio uses its running local service. Configured BitNet starts with Conduit. |
The dashboard lists each transport separately. It also groups model menus with CLI models first, so an installed coding CLI remains the natural starting point for a new chat.
See provider setup and model catalogs for environment-variable names, model discovery, and model overrides.
The browser dashboard is branded as Conduit, the Elvatis control plane for local AI work. It uses a dark navy, cyan and copper visual system, a compact sidebar, responsive layouts for narrow screens, and English or German labels. The main workspace brings together Webchat, Memory, Assistants, Tasks and Administration. Separate sections cover provider health, model catalogs, budgets, usage, pipelines, governance, diagnostics and activity. Model pickers are searchable and put authenticated CLI models first, followed by local and API transports. The complete transport ID stays visible so an operator can tell which account or local service will answer.
The routing skill classifies a request before execution and returns a primary
model plus ordered fallbacks. The route is a recommendation subject to the
models currently advertised by /v1/models, provider policy, credentials and
budget limits. Private or offline wording always remains local.
| Work | Primary model | Fallback direction |
|---|---|---|
| Product and reliability | api-openrouter/openai/gpt-6-astra |
GPT-5.6 Sol, Fable 5.1, Opus 5 |
| Architecture and difficult design | api-openrouter/openai/gpt-6-astra |
Opus 5, Fable 5.1, GPT-5.6 Sol |
| Implementation and tests | cli-codex/gpt-5.6-sol |
GPT-6 Astra, Fable 5.1, Fable 5, Terra, Codex Spark |
| Security and hardening | cli-codex/gpt-daybreak-blue-latest |
GPT-6 Astra, GPT-5.6 Sol, Fable 5.1 |
| Independent review, analysis and synthesis | cli-claude/claude-fable-5-1 |
Opus 5, GPT-6 Astra, Fable 5, GPT-5.6 Sol |
| Documentation and release writing | cli-claude/claude-fable-5 |
Fable 5.1, Sonnet 5, GPT-5.6 Sol |
| Deep research | cli-claude/claude-opus-5 |
Fable 5, Fable 5.1, Anthropic via OpenRouter |
| Everyday assistance and complex reasoning | cli-claude/claude-fable-5 |
Fable 5.1, GPT-5.6 Sol, Sonnet 5 |
| Short answers and triage | cli-codex/gpt-5.4-mini |
Codex Spark, Haiku 4.5 |
| Cost-sensitive work | cli-codex/gpt-5.6-luna |
GPT-5.4-mini, Codex Spark |
| Private, offline and classification | bitnet/auto |
lmstudio/auto |
The catalog also includes GPT-5.6 Luna for cost-sensitive work and the named models GPT-5.5, GPT-5.3 Codex Spark, Fable 5, Opus 5, Sonnet 5 and Haiku 4.5. If a primary model is unavailable, the router selects the first advertised fallback. Explicit model IDs always take precedence over recommendations.
For the routing API and platform role overrides, see the platform guide.
The same recommendation is available to an authorized operator through
POST /api/skills/routing-rules with { "arguments": { "prompt": "..." } }.
Set the client's base URL to:
http://127.0.0.1:31338/v1
Then use a model ID returned by GET /v1/models:
curl http://127.0.0.1:31338/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "cli-codex/gpt-5.6-sol",
"messages": [{"role": "user", "content": "Explain this error in one paragraph."}]
}'CLI requests optionally accept an absolute cwd and mode:
{
"model": "cli-claude/claude-sonnet-5",
"messages": [{"role": "user", "content": "Review the current test failure."}],
"cwd": "C:/work/project",
"mode": "plan"
}chat is read-only conversation mode, plan uses the provider's planning mode
where available, and agent permits workspace work only when cwd is supplied.
API and local transports ignore cwd and mode. The detailed endpoint reference
is in the integration guide.
| Task | Guide |
|---|---|
| Install, connect a provider, and send a first request | Getting started |
| Run local BitNet CPU inference | BitNet on Windows |
Index and search a workspace with tgrep |
tgrep code search |
Understand files, SQLite, backups, and CONDUIT_HOME |
Storage and backups |
| Run reviewed multi-step workflows | Pipeline examples |
| Configure platform conversations, memory, skills, and runs | Platform guide |
| Enable desktop autostart | Autostart |
| Use executable tools and GitHub Projects | Tools and Projects |
| Implement the VS Code protocol | VS Code bridge |
The complete documentation map is available at docs/README.md.
Open Vault in the workspace view selector. It searches the complete text of
all platform conversation messages visible to the current operator, with links
back to the exact message. SQLite FTS5 handles words and phrases; regex mode uses
native tgrep with a ripgrep fallback. Search stays on this device. The full-text
index lives in memory; regex searches briefly create private local text files
and remove them when the request finishes.
A configured native Llama server starts automatically with Conduit. Set
BITNET_SERVER_BINARY and BITNET_MODEL_PATH to existing local files. Optional
BITNET_THREADS and BITNET_CTX_SIZE control CPU threads and context;
BITNET_AUTOSTART=false disables startup. Conduit reuses a healthy local server
without taking ownership and stops its own child on graceful shutdown. Missing
tools or models leave the rest of the bridge available.
Recurring scans use local BitNet only, initially once per hour while the bridge is running. Each scan examines up to six message excerpts and advances through the history over subsequent intervals. You can change the interval, disable the schedule, or select Scan now. Suggestions include evidence links, can be dismissed, and become a new unsent chat draft when selected. They never rewrite your prompt library automatically. An unavailable BitNet server or invalid model output appears as a failed scan; no cloud provider receives the messages.
This is Conduit's own conversation vault, inspired by local note-taking tools such as Obsidian. It does not import external Obsidian folders. See Vault search and prompt scans for the API and operating limits.
The Windows validation includes two full bridge/Llama start-stop cycles with preserved SQLite messages and prompt suggestions, native tgrep search, and 547 automated tests. See the persistence and Vault validation report.
Conduit does not require a remote database service. On Windows its runtime
directory is %USERPROFILE%\\.conduit; on Linux it is ~/.conduit. Set
CONDUIT_HOME before starting the bridge to place all runtime data elsewhere.
Platform conversations are always saved locally, including failed requests and
received partial replies on cancellation. Conversation TTLs no longer delete
history. The default backend is encrypted SQLite in platform.sqlite. On its
first start, it imports an existing platform-state.enc without deleting the
source file. An explicitly selected encrypted-file backend remains supported.
The active backend is shown in Settings and diagnostics and at
GET /v1/platform/storage.
For later manual backend switches, download an encrypted backup, save the selected backend, restart the bridge, and restore the backup. Saving a backend preference does not move data automatically. Read Storage and backups before changing that setting.
Credentials saved through Settings go to the protected credential vault; the regular configuration stores references rather than the credential values.
BitNet is an optional family of efficient
local language models. With the supplied native llama-server integration,
Conduit can run BitNet CPU inference on your own machine and expose it alongside
other local models. It is useful for lightweight offline classification, short
planning, and private experiments. It is not a substitute for reviewing model
output or for a larger model on complex work. The BitNet guide
covers the model, reproducible Windows build, configuration, start command,
verification, and limits.
tgrep is a separate optional local code
search tool. It builds a per-workspace trigram index outside the source tree and
answers regex-style searches quickly. Conduit uses its loopback JSON-RPC daemon
when available, its CLI when installed, and ripgrep as the final fallback. Read
the tgrep guide for indexing, daemon management, security
boundaries, and troubleshooting.
Pipelines let you compose several provider steps with dependencies, limits, and approval checkpoints. The included examples demonstrate a controlled file write and review, a pause for approval, and a parallel debate:
node scripts/demo-pipelines.mjs \
--model <model-id> \
--peer-model <model-id> \
--allow-write-demo \
--approve-demoUse model IDs from your own /v1/models response. The script creates a fresh
scratch workspace and retains a local result report for inspection. The
pipeline guide explains each example, its safeguards,
and how to inspect a run in the dashboard.
The bridge works without a configuration file. Dashboard Settings is the
preferred place to store API credentials. For managed or headless startup, copy
the relevant placeholders from .env.example into an ignored
.env file:
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
LM_STUDIO_URL=http://127.0.0.1:1234
BITNET_URL=http://127.0.0.1:8080The bridge reads a .env in its startup directory, then one in its runtime
directory. Existing process environment variables always win. Never commit an
actual key or place one in a URL or command argument.
For desktop autostart, follow the autostart guide.
The canonical, complete history is CHANGELOG.md. This short overview helps choose an upgrade path.
| Version | Highlights |
|---|---|
| 0.10.0 | Elvatis dashboard rebranding, searchable CLI-first model menus, named work routing, native BitNet on Windows without Conda, tgrep search, always-local SQLite conversations, vault search, recurring prompt scans, skills, tools, governed runs, budgets, and provider profiles. |
| 0.9.1 | Release and documentation gates now run in CI, security scanning is enforced, and release tags are checked before publishing. |
| 0.9.0 | Model records gained context_window and max_output_tokens metadata. |
| 0.8.1 | Model records gained transport-specific max_prompt_chars where a CLI imposes one. |
| 0.8.0 | Windows CLI prompt delivery was fixed; model catalogs gained runtime discovery and local overrides. |
| 0.7.0 | Chat completions gained explicit chat, plan, and agent modes. |
| 0.6.0 | CLI chat requests gained an optional workspace cwd. |
| 0.5.2 | Provider transports were separated into API, CLI, and local categories; browser-session providers were removed. |
The dashboard is now the Elvatis-branded Conduit workspace, with Webchat, Memory, Assistants, Tasks and Administration in one responsive shell. Model selection is searchable and CLI-first, while the routing skill assigns work to the requested GPT, Claude or local model families with availability-aware fallbacks. The release also documents native BitNet and local search, durable sessions, provider profiles, scoped skills, governed pipelines and usage controls.
See the 0.10.0 release notes for the full Added, Changed, Fixed and Security entries.
The current release strengthens the release path and documentation checks. It The 0.9.1 release strengthens the release path and documentation checks. See the 0.9.1 release notes for complete details. for the complete Added, Changed, and Fixed entries.
npm run typecheck
npm run build
npx --no-install aahp check .
npm run scan:secretsUse focused Vitest files while working locally. The full suite runs in CI because it is intentionally slow on this Windows development machine. Contributor and release information is in CONTRIBUTING.md and the release guide.