Toolport v1.9.5
What you see is Toolport. Upgrades from Conduit-era installs migrate cleanly.
This release finishes the user-facing Conduit → Toolport rename (MCP entry name,
data directory leaf, env keys, deep links), keeps every pre-rename CONDUIT_*
env alias working, and ships the security, Teams policy, much faster indexed
local search, gateway reliability, and client work that landed after 1.9.4.
Branding and upgrade migration
Claude, Cursor, Codex, and the rest show toolport, not conduit. New
connects write the gateway under that name. Existing installs rename the entry
on launch, rewrite client env to TOOLPORT_CLIENT_ID / TOOLPORT_PROFILE, and
move the data directory from …/Conduit to …/Toolport when nothing has those
files locked. Legacy CONDUIT_* env names and conduit:// deep links still
work so headless boxes and old share links do not break.
Control-plane secrets stay off untrusted servers. Downstream MCP processes
no longer inherit TOOLPORT_* or CONDUIT_* gateway env (vault key, HTTP
token, and the rest of the control namespace).
After upgrading: open Toolport once, then restart each AI client so it reloads
its MCP config. For Toolport Studio, starting a new conversation is enough. You
should see toolport in the client’s connector list.
Security and integrity
- Opt-in block-on-injection, with org-level force for Teams members. (#465)
- Richer structuredContent scanning (head/tail of large payloads) with
redaction on hit. (#455) - Corrupt quarantine fails closed instead of treating a bad file as empty.
(#448) - Upstream MCP response shape validation before the gateway trusts results.
(#452)
Teams and gateway policy
- Org
allowedTools→ local profiletool_scope, with allowlist mapping and
apply receipts. (#457, #458, #456) - Org rate limits enforced in the local gateway. (#461)
- Optional per-call audit export to the org. (#460)
- HTTP bridge honors profile
tool_scopelike stdio does. (#459)
Search performance and benchmarking
- Local tool search is now indexed at catalog refresh time. Normal local
searches reuse normalized name/description tokens and document frequencies
instead of cloning and re-tokenizing the entire catalog for every query. The
immutable catalog and its index swap as one generation during live refreshes.
Public MCP schemas, routing, scoping, auditing, content defense, and semantic
fallback behavior are unchanged. (#470) - 10,000-tool scale and retrieval regression coverage. New correctness,
generation-coherence, bounded-memory scale, JSON latency, and regression-budget
tests make performance changes measurable before release. (#470) - Reproducible local benchmark harness. A deterministic MCP fixture drives
Toolport through its public stdio interface and records Git revision, dirty
state, build profile, binary path, and SHA-256 for auditable results. (#470)
Windows x64 release builds on the generated fixture:
| Catalog | Search median / p95 | Recall@5 | Always-on context |
|---|---|---|---|
| 500 | 1.31 / 1.63 ms | 100% | ~1,000 tokens |
| 10,000 | 11.08 / 12.76 ms | 100% | ~1,000 tokens |
These are deterministic gateway/retrieval measurements, not claims about
end-to-end agent accuracy.
Observability and clients
- Prometheus
/metricson the HTTP gateway whenTOOLPORT_METRICS=1
(legacy:CONDUIT_METRICS). (#464) - Grok Build (xAI’s terminal coding agent, the CLI behind Toolport Studio’s
Grok sessions) as a first-class Toolport client: detect, one-click connect, and
write~/.grok/config.toml. (#433) - Toolport Studio as a first-class client (
toolport-studio): detect install,
connect to~/.toolport-studio/mcp.jsonfor profile scope, and use session-aware
toasts (new conversation, not full app restart). Studio injects the gateway into
provider sessions with client idtoolport-studioeven before you click Connect,
while install detection avoids false positives on machines without Studio. (#471) - Continue remote servers stay remote. Toolport preserves
streamable-http
andssetransport type and URL through detection, import, and surgical YAML
rewrites. Malformed entries return a targeted error instead of being silently
rewritten as stdio. (#469) - Quarantine cards show annotation detail and notify on new entries. (#439)
- Client detection errors surface in the UI. (#466)
- Restart toast after connecting a client. (#442)
- Client scope labels match real behavior (active profile). (#447)
Reliability
- Large stdio JSON-RPC responses are serialized as complete frames before
stdout writes. This fixes partial-frame failures observed with large Toolport
Studio provider-session aggregates. (#471) - Oversized code-mode aggregates stay recoverable. The final aggregate is
shaped behind the existing result cursor, and regression coverage verifies the
complete payload can be fetched rather than only previewed. (#471) - Activity rows keep expansion across the live refresh. (#450)
- Shared timestamp formatting via
fmtTs. (#451) - Quarantine re-parse skipped when the file has not changed. (#435)
- Clear warnings for invalid discovery / HTTP / budget env values. (#453)
- CI runs Rust integration tests; notarization submit is time-bounded.
(#454, #441)
Docs
README, headless/Docker, Open WebUI, and the env reference prefer TOOLPORT_*
and document CONDUIT_* as still-accepted aliases.
Upgrade
In the app, use the sidebar version control when an update is offered, or
install from
Releases.
Full changelog:
1.9.5.
Contributors
Thank you to everyone who contributed since v1.9.4:
- @w3lld1 — client detection error surfacing (#466)
- @BharadwajKanneveti — warnings for invalid env values (#453)
- @mcxin-y / King Star — upstream response shape validation (#452)
- @ColumbusLabs — CI Rust integration tests (#454)
- @AnayGarodia — Activity row key stability (#450) and
fmtTscleanup (#451)
And to everyone testing upgrades from Conduit-era installs and filing issues.