Releases: Highsteads/ClaudeBridge
Release list
v2.12.0 — see inside your automations: action steps, references, and what-caused-that
This release lets Claude see inside your triggers, schedules and action groups — the parts Indigo's scripting API has never exposed.
New tools (166 total, up from 158)
Read (safe, no changes made)
get_trigger_details,get_schedule_details,get_action_group_details— the full definition of an automation, including its conditions and every action step: device commands, variable sets, embedded scripts (source included) and plugin actions. Read directly from Indigo's database file, so very recent edits may take a few minutes to appear.find_automation_references— ask "what touches this device or variable?" and get role-tagged answers: which triggers watch it, which conditions read it, which action steps command it, including chains through nested action groups. Cross-checked against Indigo's own dependency graph.investigate_event— ask "what turned my light on at 9pm?" and get a ranked list of likely causes with evidence, built from the event log plus the structural knowledge above. It reports likelihood, never certainty.
Write
update_trigger— rename a trigger, edit its description, or re-point a device-state or variable-change trigger's event settings, with a before/after report.update_schedule,update_action_group— rename and re-describe. Schedule timing turns out to be read-only through the API, so timing changes stay in the Indigo UI.
Improved
enable_trigger,disable_trigger,enable_schedule,disable_schedulenow take optionaldelay_secondsandduration_seconds— so Claude can silence a motion trigger for half an hour and it re-enables itself automatically.
Action steps and conditions remain read-only — editing them still needs the Indigo UI.
Test suite grows from 309 to 349, including a live-database smoke test.
Installation
- Download
Claude.Bridge.indigoPlugin.zipbelow - Unzip it — you will get
Claude Bridge.indigoPlugin - Double-click
Claude Bridge.indigoPlugin— Indigo installs it automatically
🤖 Generated with Claude Code
v2.11.0 — Z-Wave management, quick-start prompts, and a log resource
This release came from holding Claude Bridge up against the whole of Indigo's own API and asking what Claude still couldn't reach. Eleven new tools, plus a couple of things the plugin had been advertising but not actually delivering.
Z-Wave management (the headline)
Claude can now:
- Set a device's configuration parameters directly — the fiddly numbered settings that normally mean the Indigo GUI and a device manual. "Make that motion sensor less trigger-happy" is now a conversation.
- Heal the mesh network (whole network or around one node).
- Add or remove Z-Wave devices — inclusion / exclusion mode. These physically pair hardware, so they're admin-only and clearly labelled.
Filling the gaps
- Nudge a cooling setpoint up/down (heating already had this).
- Ask what depends on a trigger before deleting it (schedules and action groups already had it).
- Full reflector status, and a tool that tells Claude where your logs and history database actually live.
Two extras
- Quick-start prompts — pick "how's the house right now", "review today's energy", "sweep the batteries", "something's stuck, help me fix it", or "tune a Z-Wave sensor", and Claude knows exactly where to begin.
- Your recent event log is now a readable resource, so Claude can glance at what the whole house has been logging.
158 tools, 304 tests. No database, no cloud — everything runs inside Indigo.
Install
- Download
Claude.Bridge.indigoPlugin.zipbelow. - Unzip it — you'll get
Claude Bridge.indigoPlugin. - Double-click it — Indigo installs it automatically.
v2.10.0 — deep-review fix batch: broken tools fixed, error-handling hardened, /health token leak closed
A deep-review fix batch — a full multi-agent bug hunt of the plugin, every finding verified against a live system before anything was touched. Nine genuine faults, several of them tools that had never actually worked.
What changed
Errors are handled honestly now. When a tool hit an error it handed the failure back as a tidy result instead of raising it, so behind the scenes an error could sit in the read-cache and be served back as a fresh answer for a minute, the health counters recorded it as a success, and the "don't echo a sensitive tool's raw error to the client" safeguard never fired. All three are fixed — errors are spotted, never cached, counted honestly, and a mail or webhook failure no longer leaks its host and login into a reply.
The /health page no longer leaks tokens. It listed live usage keyed by the raw bearer token, so anyone who could read it could read everyone else's. Those are now a short one-way fingerprint.
Four tools that never worked are fixed or gone:
- Nudging a dimmer up/down by a few percent called an Indigo method that does not exist — now uses the real one.
- "What depends on this schedule or action group before I delete it" always came back empty — it now lists the real dependants.
- The two "enable / disable an action group" tools are removed — Indigo has no such thing for action groups and they failed every time (147 tools now, down from 149).
- The energy summary tools used to invent a row of zeros when the figures were not in the logs — they now say so and point you at the live figures.
A few more: firing a Claude Event now actually delivers its data to the trigger; "refresh dependencies" no longer offers to restart Claude Bridge from inside itself; running two bits of Python at once can no longer scramble the plugin's output; and the installer finds your Indigo version on its own and refuses to run from a copy that would delete itself.
292 tests. No database, no cloud — everything runs inside Indigo.
Install
- Download
Claude.Bridge.indigoPlugin.zipbelow. - Unzip it — you will get
Claude Bridge.indigoPlugin. - Double-click it — Indigo installs it automatically.
v2.9.0 — timed device actions, ten new tools, and a plain-English README
The headline: timed device actions. "Turn the fan on for ten minutes" or "switch that off in half an hour" is now a single request — device_turn_on and device_turn_off take optional delay and duration values and hand the timing to Indigo's own delayed-action engine, so it keeps working long after the conversation has ended. A companion tool cancels a pending timed action on one device without disturbing anything else.
Nine more tools round out the batch, all found by walking Indigo's live API and comparing it against what the plugin already offered: reset the lifetime kWh count on an energy-metering plug, make a device beep so you can find it on the shelf, ping a device to check it still answers, Indigo's native all-lights-on / all-lights-off / all-devices-off broadcasts (clearly labelled — they reach Z-Wave and similar directly-connected devices, not plugin-owned ones), folder deletion for devices and variables (a non-empty folder is politely refused unless you say otherwise), and audit_api_coverage, which checks after an Indigo upgrade whether the API has gained anything this plugin hasn't bridged yet. That brings the total to 149 tools.
The README has been rewritten in plain English — including, importantly, an honest "What this costs" section: you need a Claude Pro or Max subscription for Claude Code itself, and the plugin's own API key is optional (it powers one niche feature — most people can skip it entirely).
For anyone arriving from the last release (2.6.6, late May): a great deal happened in between — outbound event webhooks with a default-deny safety firewall, a thorough security review that made per-token read/write/admin scoping properly fail-closed, much lighter installs (the dependency list went from twenty packages to four), transport reliability fixes that made the bridge self-heal across plugin reloads, and a 283-test suite that now runs on every change. The full story is in the README's changelog.
Install: download Claude.Bridge.indigoPlugin.zip below, unzip it, double-click Claude Bridge.indigoPlugin and Indigo installs it. Upgrading from any earlier version: same thing — your settings are kept.
v2.6.6 — fix check_plugin_updates
Fixed the check_plugin_updates MCP tool. It walked the plugin list with
getPluginList() (which returns PluginInfo objects) and then passed each one
back into getPlugin(), which expects an id string — so every plugin errored
with a getPlugin(PluginInfo) signature mismatch and the tool reported a
misleading zero. It now uses the PluginInfo objects directly and reads
compatibleUpdateAvailable straight off them. No other changes.
v2.6.2 — 50 new MCP tools + plugin-dev helpers
v2.6.2 — 50 new MCP tools, plugin-dev helpers, lint refinement
Tool count: 86 → 136. Three feature batches in one release plus a security cleanup.
What's new
43 new IOM-wrapping tools (v2.5.0)
Previously only reachable via execute_indigo_python. Now first-class MCP tools:
- Device CRUD:
delete_device,duplicate_device,move_device_to_folder,enable_device,rename_device,device_toggle,dimmer_brighten_by,dimmer_dim_by - Variable gaps:
variable_delete,variable_move_to_folder - Schedule CRUD:
delete_schedule,duplicate_schedule,execute_schedule_now,schedule_remove_delayed_actions,schedule_get_dependencies - Trigger CRUD:
delete_trigger,move_trigger_to_folder - Action group CRUD:
delete_action_group,duplicate_action_group,enable_action_group,disable_action_group,action_group_get_dependencies - Sprinkler suite:
sprinkler_set_zone,sprinkler_run/stop/pause/resume/next_zone/previous_zone - Thermostat:
set_fan_mode - Speed control:
speedcontrol_set_index/increase/decrease - Server tools:
server_speak,calculate_sunrise/sunset,get_latitude_longitude,get_web_server_url,get_deprecated_elements,remove_all_delayed_actions - Control pages:
list_control_pages,get_control_page - Cross-plugin:
check_plugin_updates
7 plugin-development helpers (v2.6.0)
For plugin authors building/debugging their own plugins:
plugin_diff_source_vs_installed— catches static-asset stale-sync and gutted-Packages driftplugin_refresh_deps— delete pip success marker, optional restartplugin_show_packages_versions— readContents/Packages/*.dist-infoplugin_validate_xml— Devices/Actions/Events/MenuItems naming-rule checkplugin_node_check_html—node --checkon inline<script>blocks (catches stale-paste JS bugs)plugin_lint— convention sweep againstplugin.pydevice_history— focused SQL Logger sqlite query
Lint refinement (v2.6.1)
plugin_lint's missing_loop_guard rule is now param-name agnostic, handles annotated signatures, recognises three guard idioms, and only flags when deviceUpdated actually writes back. False positives gone.
Defensive change (v2.6.2)
VectorStoreManager.start_async() moves vector store warmup to a daemon thread. Harmless improvement.
Security cleanup
indigo_mcp_proxy.py — replaced hardcoded Bearer token literal with REPLACE_AT_INSTALL placeholder.
Known issue (upstream)
Investigation during this release uncovered that Indigo's IWS goes silent for ~4 min 37 sec after EVERY plugin restart (not just Claude Bridge). Reflector client polling localhost holds the IWS event loop until it times out and reschedules. Documented in docs/forum_post_api_gaps.md for upstream report.
Workaround: wait ~5 minutes after a restart, or disable the Reflector temporarily.
Installation
- Download
Claude.Bridge.indigoPlugin.zipbelow - Unzip — you'll get
Claude Bridge.indigoPlugin - Double-click it — Indigo will install it automatically
Architecture
Two new handler files keep concerns separate:
mcp_server/tools/extended_tools/extended_tools_handler.py— all 43 IOM wrappersmcp_server/tools/plugin_dev_tools/plugin_dev_tools_handler.py— all 7 dev helpers
Each follows the established BaseToolHandler shape with structured dict returns and handle_exception error wrapping. Dispatch in mcp_handler.py uses two shared helpers (_ext_call, _pd_call) to keep boilerplate to a minimum — one line per tool.
🤖 Generated with Claude Code
v2.3.3 — run_script auto-injects `indigo`
Fix: run_script auto-injects indigo into globals
Scripts run via the run_script MCP tool no longer need an explicit
import indigo at the top. The indigo module is now pre-injected into
the exec namespace, matching Indigo's own GUI action runner.
Background
Before 2.3.3, scripts dispatched by mcp__indigo-mcp__run_script failed
with NameError: name 'indigo' is not defined because Claude Bridge passed
only {"__file__", "__name__"} to exec() — none of the Indigo namespace
injection that the GUI action runner provides. The docstring claimed
"Indigo globals available" but the implementation did not match.
Fix
mcp_server/tools/script_tools/script_tools_handler.py:run_script —
the ns dict passed to exec() now includes "indigo": indigo.
Compatibility
Scripts that already include import indigo continue to work — the
explicit import simply re-binds the name. No client changes required.
Installation
- Download
Claude.Bridge.indigoPlugin.zip - Unzip — you will get
Claude Bridge.indigoPlugin - Double-click — Indigo will install the new version
ClaudeBridge v2.3.2
Indigo plugin release v2.3.2.
Download Claude.Bridge.indigoPlugin.zip below, unzip, and double-click the resulting .indigoPlugin to install.
Per-plugin changelog: see README.md / repo CLAUDE.md for full release notes.
ClaudeBridge v2.3.1
Indigo plugin release v2.3.1.
Download Claude.Bridge.indigoPlugin.zip below, unzip, and double-click the resulting .indigoPlugin to install.
Per-plugin changelog: see README.md / repo CLAUDE.md for full release notes.
ClaudeBridge v2.3.0
Indigo plugin release v2.3.0.
Download Claude.Bridge.indigoPlugin.zip below, unzip, and double-click the resulting .indigoPlugin to install.
Per-plugin changelog: see README.md / repo CLAUDE.md for full release notes.