Skip to content

Releases: intouch-ai-core/intouch-ai

InTouch AI 8.0.16

Choose a tag to compare

@victoraduarte victoraduarte released this 01 Oct 22:19

InTouch AI 8.0.16 — what's new

Covering 9 September to 1 October 2026, and folding in 8.0.14 and 8.0.15, which were not
published on their own.

What to download

install-intouch-ai.zip — the complete installation, ~255 MB. Extract it and run
install.py (Windows: install.bat). Nothing is fetched over the network.

Most of this release removes limits nobody chose and stops things that ran past their welcome.
Two editions change what they include; that is the one section to read if you hold a licence.


Edition changes

Team now includes up to three users. Every Team user is an administrator, as before, and the
built-in intouch account counts as one of the three. Adding, copying, importing or restoring a
user past the limit is refused.

The server database each edition runs on:

Edition Server database
Personal, Solo Embedded (no setup)
Team MySQL, or embedded
Department MySQL or SQL Server, or embedded
Enterprise MySQL, SQL Server or DB2, or embedded

This is the database InTouch keeps its own definitions and history in. It does not limit the
databases your workflows connect to — every edition's SQL tool still reaches all of them.

Import and restore used to add users without checking the licence at all, on every edition.
They check it now.

No time limits unless you set one

InTouch runs workflows for days, but the engine was quietly stopping work at an hour: a task with
no maximum run time got a one-hour default, script and HTTP steps were capped at an hour, tool
calls defaulted to two minutes, and a sleep or wait could not exceed an hour. Every one of those
is gone. A limit of 0, or no limit at all, now means unlimited, and any limit you do set is
honoured as written.

Nothing keeps running after the server stops

A program a workflow starts — a Python or shell step, a CLI such as AWS or Google Workspace, an
MCP server — used to keep running when the server stopped, invisible to InTouch. A step from
before a restart could collide with the same step started after it. Every program InTouch starts
is now tracked, and stopping the server or terminating a run ends it and everything it started
(a virtual-environment re-launch, a shell pipeline, a CLI that forks). Previously a terminated
step killed only the top process.

Sessions

  • Sessions expire after 30 minutes unused (System → Settings → Session idle timeout; 0 turns
    it off). An open browser tab stays signed in; a browser that was closed or crashed while
    signed in no longer leaves its session valid until the next restart.
  • End session. The Status page lists active sessions with an End session button. You cannot
    end the session you are using — sign out instead.
  • Failed sign-ins are logged, with the user name, the address it came from and the reason.
    The person signing in still gets a generic refusal, and the password is never written.
  • Sign-in with a browser-filled password. Some browsers show a saved password in the field
    without handing it to the page until you click. The first attempt then sent an empty password
    and failed. Sign-in now sends exactly what the fields show.

Folder triggers no longer miss files that arrive while the server is down

A folder trigger remembered which files it had seen only in memory, so after a restart it took
whatever was in the folder as already seen. Files dropped while the server was stopped or still
starting never fired. The trigger's record is now saved each time it fires, and a restart picks up
from it — files that arrived in the meantime fire on the first check.

AI tasks

  • Images on every AI task. imageFiles works on Anthropic, OpenAI, Gemini, Mistral, xAI,
    Groq, OpenRouter, Ollama and OpenAI-compatible endpoints.
  • A cut-off answer now fails the task instead of being passed on as if it were complete, and
    says which setting to raise. Previously an answer that ran out of tokens mid-sentence went
    through as a success.
  • Gemini with thinking turned off still thought, spending most of the token budget on it and
    cutting answers short. Off now asks for the least thinking each model allows.
  • forEach combined every item's output, failed ones included. It combines the items that
    succeeded and reports the rest as failedCount.
  • Folder triggers publish the paths of the new files, so a workflow can process exactly those.

Workflow memory survives between runs

A workflow file's {{self.memory}} arrived empty on every run: what one run saved was overwritten
at the end of that same run. Workflows that keep a watermark — "process only what is new since
last time" — re-did everything each run. Memory now carries over.

Import

  • A successful import into an area that already existed reported failure, and because it
    "failed", the per-object account of what was imported was thrown away.
  • An import that hit an error swallowed it: no log entry, and a bare failure code with none of the
    detail already gathered. It now logs the error and returns everything up to the point it
    stopped.
  • A track with no workflows in it could crash the whole import.
  • Importing objects whose owners do not exist on this server — the normal case when bringing work
    in from somewhere else — failed on the first object.
  • Each workflow was checked against tracks by its own name rather than its track's, so existing
    tracks were never found.
  • Import deletes workflows that a track no longer contains; it now logs each one by name before it
    does.

Smaller fixes

  • A cancelled run lost the last lines of its activity log.
  • The PeopleSoft HCM connector asked for a peoplesoft credential; its credential type is
    peoplesoft-hcm, and its description now says so.

Built from workspace commit 68b71e1bdb3c0668997930e90dfe6cf071069a54. Installer SHA-256:

f9ae6b1c465382b28005a69265a745ea9a4cb53f1c2e2b475c0e83f2fd969eea

InTouch AI 8.0.13

Choose a tag to compare

@victoraduarte victoraduarte released this 10 Sep 00:16

InTouch AI 8.0.13 — what's new

Covering 9 September 2026, and folding in 8.0.12 from the same day.

What to download

install-intouch-ai.zip — the complete installation, ~255 MB. Extract it and run
install.py (Windows: install.bat). Nothing is fetched over the network.

This release fixes things that were quietly not working. Nothing here adds a capability; it
makes existing ones reachable, observable, and honest about what they did.


Import and export were unreachable over REST

Six of the eight /import-export endpoints answered 400 Required argument [String file] not specified to a request that carried ?file=... in the URL. The file parameter was annotated
only with the validation constraint @NotBlank, which binds nothing — and on a POST an
unannotated argument binds from the body, not the query string. Import, restore, and all four
exports could not be called at all. Only /backup, which spelled the binding out, worked.

What did get through imported empty. TrackBean.fullName was declared and never assigned, while
five call sites read it:

  • exporting a track wrote "jobsets": [] — and answered 204, as if it had succeeded;
  • every workflow in an exported area was silently missing, because the child lookup keyed on the
    same empty string;
  • get-id-by-name-and-track-id rejected the fully-qualified name ':website-download-count'
    that it had just built itself;
  • role objects were stamped with an empty name.

It is derived from its two neighbouring fields now, so there is no producer left that can forget.

Three more in the same area: backup died with a NullPointerException the moment it finished
gathering objects, because the caller it reads back was assigned nowhere; export-area-by-name
answered 403 to root administrators while handing a pass to callers who failed its own test,
the condition being inverted; and importing an area onto a clean server restored the area and
nothing inside it, because each track carried the area id it had on the source server.

Looking up a track that does not exist returned 500. It returns 404.

A running workflow now tells you which step it is on

The active-workflow list has always carried a current task id and name, and the engine's own task
loop set them. Workflows defined as files delegate to a different executor, which never did — so
they reported "running" and a blank step, from the first task to the last. A fifteen-step publish
looked identical at step 2 and step 14.

Half of this had been found before: a comment at the delegation site explains that the status
needed setting there because "the IML delegation path has no such loop". The status was fixed.
The step was not.

goto and skip_remaining worked in one kind of workflow and silently failed in the other

The if task can end a run early or jump forward to a named task. Both are implemented by
signals that are deliberately not failures — no alert fires, nothing is written to the log as
an error. The engine's native path catches them ahead of its failure handler. The file-based path
did not: its catch-all turned them into task failures, so a workflow behaving exactly as
documented died with WorkflowGotoTaskException: goto <name>.

Forward-only is still enforced, and a jump that would go backwards fails loudly with the two
positions named.

continueOnError existed in the error message and nowhere else

Putting it in a task's properties produced "move it to the task root". At the task root it was
rejected as an unknown field. It was implemented in neither place — the validator sent everyone
who tried it to a dead end. It is a real field now, defaulting to false: any failure still stops
the workflow unless the task says otherwise.

Publishing no longer half-completes

The release pipeline uploaded the installer and the website, promoted them, and then failed on
the hub step — because that step required an argument the documented invocation never mentions,
and had no default while every other argument had one. The result was a site advertising a new
version beside a hub still serving the old catalogue. A publish that stops halfway is worse than
one that refuses at the gate, which is what the rest of that pipeline is built to do.

The tool catalogue shipped in 8.0.10 and 8.0.11 was also stamped 8.0.9.


Corrections in this release were found by using the product, not by reading it. The blank step
was reported by someone watching a publish run and noticing it never said what it was doing.


Built from workspace commit bff473b1da1ea0aaaed89e7cf9ff2fc2321e09c0. Installer SHA-256:

17c21e1138e929906f7d7c239f54e88dc8fd6a3c39896c9ae045cdf4145fca99

InTouch AI 8.0.11

Choose a tag to compare

@victoraduarte victoraduarte released this 04 Sep 21:43

Automation you describe in plain English. You tell it what you want done; it builds the
automation, schedules it, runs it, and shows you the proof it ran.

Personal Edition is free forever — no licence key, no trial, no expiry.


Download

install-intouch-ai.zip below — the complete installation, ~255 MB. Extract it and run
install.py (Windows: install.bat). Nothing is fetched over the network. The two
Source code archives are attached by GitHub automatically and are not the product.

Also at https://www.blueisle.com/downloads/download.php.


You can now ask it to build a new tool

InTouch ships with 85 tools and the Hub carries 1,387 more, but sooner or later you want
something that does not exist. You can now describe it and have it built:

"Create a tool called json-diff that compares two JSON documents and reports what changed —
which keys were added, which removed, and which values differ."

It writes the tool, registers it, and it is immediately usable as a step in any workflow, by
name, like any built-in. In this release that path was broken outright — the tool was written to
disk but never registered, so nothing you asked to be built could actually be used. Editing an
existing tool had the same fault, and reported success while continuing to run the old version.
Both are fixed, and a failed install now leaves nothing behind.

It does not create automation you did not ask for

Ask for a workflow and you get a workflow. Previously it would sometimes attach a schedule of its
own choosing — a daily 7am run, never expiring — and occasionally not mention it. On a real
install that is a job quietly running every morning with whatever effects its steps have.

Now a request that says nothing about timing produces something that runs when you run it. Say
"every morning at seven" and it schedules it. The decision is yours.

It tells you what it made up

When the assistant fills in a value you did not give it — coordinates for a city, an endpoint, an
identifier — it is now stated beneath the answer:

Values supplied by the assistant, not by you or a lookup — check them:
latitude=25.9808, longitude=-80.1390

The server writes this line, not the AI, so it cannot be forgotten or phrased away. It appears
only for values that genuinely came from the model.

Straighter answers about what you have

Ask about a tool you do not have and it now checks the Hub before answering, so "you do not have
that" is something it verified rather than remembered. It had been capable of denying that a tool
existed while it sat on the Hub, installable.

Quicker and cheaper

Questions the server can answer by itself — what a tool takes, what it publishes — are answered
from the tool's own schema in about ten milliseconds, with no AI call at all. On our reference
install that was 82% of everything previously sent to the AI provider.

The material sent with each question also shrank by a factor of seventy, because it was being
selected by a match on words like the and and: a question about the weather pulled in most of
the tool catalogue. Answers got better, not just cheaper.

Hub tools list what they publish

Every Hub tool now declares its outputs in the catalogue, so you can see what a tool emits — and
what a later step can use — before installing it.


Full technical notes: RELEASE_NOTES_8.0.11.md in the repository.


Built from workspace commit efb90ed4b7b9f81cb5806cd2fffafa919fd13050. Installer SHA-256:

07cebf13dbdd2b807fcf0deb905403917613d03b9bb7dad6e0a40ef716fdde0e

InTouch AI 8.0.10

Choose a tag to compare

@victoraduarte victoraduarte released this 04 Sep 01:39

Automation you describe in plain English. You tell it what you want done; it builds the
automation, schedules it, runs it, and shows you the proof it ran.

Personal Edition is free forever — no licence key, no trial, no expiry.


Download

install-intouch-ai.zip below — the complete installation, ~240 MB. Extract it and run
install.py (Windows: install.bat). Nothing is fetched over the network. The two
Source code archives are attached by GitHub automatically and are not the product.

Also at https://www.blueisle.com/downloads/download.php.


Every tool now tells you everything it takes, and it is checked against the code

When you describe an automation, the assistant picks tools and fills in their fields. It can only
use what a tool declares. This release is about closing the gap between what tools declared and
what they actually do.

file advertised three fields. Its code reads fifty-six. Seven tools shipped no schema at
all, so a form drew three boxes and a workflow could set a field that quietly did nothing. Across
the server, every field a tool reads is now described: 744 of 744, up from 529 of 575.

The AI tools hid their guardrails. outputSchema, validationRetries and redactPatterns —
validation and redaction, annotated in the code and invisible to every caller — are back where
you can see them. So are the two run_command fields that pass credentials to a script.

The model dropdowns were stale. They offered gpt-4o, claude-opus-4-6 and
gemini-2.5-flash: ids that now return 404. The list is read from the live catalogue, so it
cannot go stale again.

Required fields were invisible. Two tools of seventy-two marked any field as required, so
nothing could warn you before a run failed. Forty do now.

The hub was audited against its own scripts

1,334 tools, every one compared to the code that runs it. 1,303 published an error key that one
declared. 1,188 published the operation they ran and told nobody. 390 accepted a query parameter
you could not discover. One tool had a broken path template, so two of its operations could never
have worked. Every README now documents every input and output, generated from the manifests.

Connector versions were wrong everywhere — the hub advertised 1.0.0 for jars that are 1.1.1 — and
the installer bundled connectors from July. Both corrected.

Removed

The deprecated os tool, replaced by file, system and net. Nothing shipped still used it.


Built from workspace commit 9e4769fc0a67e5b09f29da812a752f373446d571. Installer SHA-256:

b01cd87437e5f9273963b4bfcfe3300f2e30ddb2f712b4787cb6e012a4d326f8

InTouch AI 8.0.9

Choose a tag to compare

@victoraduarte victoraduarte released this 28 Aug 21:54

Automation you describe in plain English. You tell it what you want done; it builds the
automation, schedules it, runs it, and shows you the proof it ran.

Personal Edition is free forever — no licence key, no trial, no expiry.


Download

install-intouch-ai.zip below — the complete installation, ~240 MB. Extract it and run
install.py (Windows: install.bat). Nothing is fetched over the network. The two
Source code archives are attached by GitHub automatically and are not the product.

Also at https://www.blueisle.com/downloads/download.php.


Every release is now tied to the source that made it

8.0.7 was tagged, its installer was built at 12:24, and three fixes were committed at 12:42 and
12:56. The tag therefore described code the downloadable file did not contain. Every version check
was green, because the version was never the thing that was wrong.

Three changes close that, none of which you will see while using the product:

One place declares the version. It used to be typed into four files, including three integers
inside the server itself — and that copy is the one a running server reports, so updating the build
files and missing it shipped a server announcing the previous release. It is now derived from a
single line, everywhere.

The publish gate refuses a mismatch. A release cannot be cut unless the built artifact came from
the current commit with no uncommitted changes. The 8.0.7 situation would have been stopped rather
than shipped.

Every version keeps its deploy image and its source. Both are archived side by side and named by
version, so "it broke on 8.0.9" resolves to an exact installer and the exact tree that produced it.
Previously the download was overwritten by each release and the older build was simply gone.

The installer stops reporting a version it does not own

install.py printed a version in its banner and wrote one into config/install.json. Nothing ever
read that field — the launchers take only the port — and the number was a second copy of a fact the
server already reports accurately. Both are gone. Once installed, ask the server.


8.0.7 and 8.0.8 have been archived retroactively, so those two are recoverable despite predating
any of this.

InTouch AI 8.0.8

Choose a tag to compare

@victoraduarte victoraduarte released this 28 Aug 19:59

Automation you describe in plain English. You tell it what you want done; it builds the
automation, schedules it, runs it, and shows you the proof it ran.

Personal Edition is free forever — no licence key, no trial, no expiry.


Download

install-intouch-ai.zip below — the complete installation, ~240 MB. Extract it and run
install.py (Windows: install.bat). Nothing is fetched over the network. The two
Source code archives are attached by GitHub automatically and are not the product.

Also at https://www.blueisle.com/downloads/download.php.


The assistant no longer asks for a credential it ignores

/assistant/ask took a credentialName parameter, and read it nowhere — the name appeared once
in the whole controller, in the parameter list. The provider and its credential come from the
server-wide AI Assistant setting, chosen in System → Settings → AI Assistant.

The parameter was worse than useless: the MCP tool made it required, and its description
promised the answer came from an Anthropic credential. Five test questions were asked that way and
all five were answered by a Gemini model, because that is what the server was configured with.
Anyone reading either signature would have concluded the provider was selectable per call. Removed
from the endpoint and from its caller.

A correctly configured server stops warning you about it

Install two connectors from a nine-member family — msgraph and msgraph-mail, say, because mail
is what you need — and startup validation reported seven warnings, once per member you chose not to
install, on every boot.

The check is right for a family compiled into the server, where a missing member means the build is
broken. It is wrong for connectors installed one at a time from the Hub, which is the whole point of
installing them one at a time. A warning whose only remedy is to install seven things you do not
want is how people learn to stop reading warnings. It now applies only where it can mean something.

The answer verifier stops flagging correct answers

The assistant checks its own answers against the records it retrieved, and reports what it would
have rejected. One of those checks asked whether the answer used a [ref:…] citation marker — not
whether it had actually named anything.

Measured across five live questions, it fired on three, and every one of the three was right: a
correct workflow, a correct connector slug given twice in plain text, and a correct explanation.
Naming is now the test. If the answer contains the name of something retrieved, it named it.


Every item above was found by running the assistant and reading what came back.

InTouch AI 8.0.7

Choose a tag to compare

@victoraduarte victoraduarte released this 28 Aug 17:45

InTouch AI 8.0.7 — what's new

Covering 28 August 2026.

What to download

install-intouch-ai.zip — the complete installation, ~240 MB. Extract it and run
install.py (Windows: install.bat). Nothing is fetched over the network.

The two Source code archives below it are attached by GitHub automatically to every tag and
cannot be removed. They are not the product's source: this repository holds a README and a
licence, so those archives are about 11 KB of exactly that. InTouch AI is commercially
licensed — the source is not published. The ecosystem on top of it is open: the
MIT-licensed intouch-tool-api, and workflows and tools as IML.

This release is about what the assistant is told. Every document it reads was audited against
the code that actually runs, and the places where the two disagreed were fixed in the code's
favour.


The catalogue now says who each connector is for

Every one of the 1,527 installable artifacts on hub.blueisle.com carries a fit statement — what
the product is, who uses it, and which disciplines it belongs to. 109 did not, and they were the
wrong 109: every licensed enterprise connector (Workday, SAP, NetSuite, Coupa, Essbase, TM1 …) and
the entire Microsoft Graph family.

The effect is on what you get back when you ask in your own words. Asked "what do you have for
reading Microsoft 365 email", the assistant did not name msgraph-mail — the connector built for
exactly that — because nothing in its published record said so. It does now.

81 connectors were described only as "Name API tool." — a sentence that says nothing, and the one
sentence the assistant is given about them. Each was rewritten from the connector's own
documentation: data is the Regulations.gov docket API, lgtm is a code-analysis service, up is
an Australian bank. 58 sat in the wrong category and 27 carried no tags at all.

Every tool states what it publishes

A workflow references a previous step's output as {{taskName.key}}, and a key that was never
published resolves to nothing at run time. All 1,387 connector pages now list their published
keys
, derived from the connector itself rather than written by hand.

The built-in contract at hub.blueisle.com/base-tools.md gained the four connectors every install
ships — sql, ssh, ftp and rsync — which had been missing from it, and lost twelve entries
that were never tools at all but credential types. It listed slack as though you could write
"tool": "slack"; everything outbound goes through message.

Workflows can act on every row

forEach runs one task once per element of a collection, with concurrency for up to 64 at a
time. It has worked for some time and the reference guide said, in bold, that it did not exist —
so the assistant would tell you a workflow could only send one summary email when it could send
fifty individual ones. Documented, with a worked example.

The variable guide's table of published output names was also wrong in eleven of fifteen places
(statusCode for responseCode, stdout for output, a completion field no AI tool has). It
now points at the generated contract instead of repeating names by hand.

Nothing on the hub is unreachable any more

Four published connectors could be installed but had no page — their address returned 403 while
their definition returned 200 — and were missing from the machine-readable index, the sitemap and
the plain-text catalogue. The publishing pipeline regenerated two of its seven surfaces and now
regenerates all of them, and refuses to publish at all if any live artifact lacks a page, a README
or a sitemap entry.

Deprecated connectors are kept so existing installs keep resolving, but they are now listed under
their own heading rather than counted among the installable ones.


Everything above was checked against a running server, not against the documents that described
it.

InTouch AI 8.0.6

Choose a tag to compare

@victoraduarte victoraduarte released this 27 Aug 16:21

Automation you describe in plain English. You tell it what you want done; it builds the
automation, schedules it, runs it, and shows you the proof it ran.

Personal Edition is free forever — no licence key, no trial, no expiry.


Download

install-intouch-ai.zip (~240 MB) — the complete installation. The server, the web UI, the
documentation, the starter tools and workflows, and install.py to put them where you want
them. Nothing is fetched over the network, so it installs on a machine with no internet.

The two Source code archives GitHub attaches below are about 11 KB each. They are the
repository at this tag — a README and a licence — not the product. GitHub adds them to every
release automatically and they cannot be removed. InTouch AI is commercially licensed; what is
open is the ecosystem on top of it: the MIT-licensed intouch-tool-api, and workflows and
tools authored as IML.

Install

You need Java 17+. On Windows the installer installs Python for you.

unzip install-intouch-ai.zip -d install-intouch-ai
cd install-intouch-ai
python3 install.py

Windows: extract, then double-click install.bat.

Then open http://localhost:2200, log in with intouch / blueisle, paste an
openrouter.ai key into the Get Started panel, and type what you want.
Put a dollar on the key — a free one is good for a handful of calls. Or point it at a local
Ollama model and pay nothing at all.

Start and stop with python3 bin/start.py and python3 bin/stop.py.

The first five minutes

Ask it in English. It builds the thing, runs it once to prove it works, then schedules it:

"Email me the top 5 Hacker News stories every morning at 8."
"Watch this folder and archive anything older than 30 days, Sundays at 2am."
"Every 15 minutes, check whether that API is up, and message me if it stops."

The first email arrives with nothing configured — no SMTP server, no mail credential. That
is checked on every release: a fresh install into an empty directory, booted, logged into, and
made to send mail, before the zip is allowed to ship.

What it is underneath

A single JAR and an embedded database. No external services, no container, no cloud account. A
Raspberry Pi 5 is enough to run it.

  • Credentials live in an AES-256-GCM vault. Secrets are redacted out of every API response,
    so the AI can use a credential without ever being given it.
  • Eight AI providers — OpenRouter (one key, hundreds of models), Anthropic, OpenAI, Gemini,
    Mistral, DeepSeek, xAI, and Ollama for fully local. You pick per task; swap a provider without
    rewriting the work.
  • Schedules, file triggers, folder triggers, AI-condition triggers, ad-hoc runs. Retries,
    alerting on four channels, and an execution log that says what ran, when, and what it produced.
  • The Hub — 1,800+ tools, workflows and skills to install from,
    or author your own as IML: plain JSON, diffable, portable between installs.
  • A 275-tool MCP server, so Claude Code or any MCP client can drive it. InTouch is an MCP
    client too.

Determinism when you want it

Most platforms make you choose: hand-write every step, or hand everything to a model. You pick
per workflow.

  • Fully deterministic — no model anywhere in the execution path.
  • Fully AI — it reasons and acts on every run.
  • AI authors once, then deterministic forever — describe it in English, let the assistant
    generate the workflow, then run that workflow at zero AI cost per run, identically, forever.

That third one is the point. The assistant is how you build; it does not have to be how you
run.

Editions

Personal is free forever: one user, 25 contacts, everything else unrestricted. Solo adds your
own named login and unlimited contacts; Team shares work across up to five people; Department
adds role-based access control, area isolation and Active Directory; Enterprise adds TLS and
cipher governance and SSO. Every edition runs the same code — the edition is a licence
attribute, not a different build.

Help

  • Discord — fastest answers
  • Slack — same people, if Slack is where you live
  • Issues — bugs and requests
  • Ask the assistant. It reads the full documentation and your actual install, so it
    answers about your machine rather than a generic one.

8.0.6 — this build's work went into the assistant: schedules land when you said rather than
when you asked, a refused write is reported as refused instead of as success, an empty reply
from a provider says so, and the assistant is reachable only by a signed-in person.