Workplace intelligence

Your test bench has a memory now.

The same memory layer for engineers driving the bench, engineers reading from it, and engineers shipping software around it. Every run, revision, calibration event, and note — embedded, indexed, and queryable.

Online184 events / hr12 sequences indexed in the last minutetick 0
WORK FLOWS INWORKPLACE MEMORY14 collections · regime‑aware · pre‑baked bundles · <1s ingestWORK COMES OUT — FOR EVERYONE
note
engineer notes
1,284 / 14d
lock
sequence locks
61 / 14d
run
run results
3,104 / 14d
pin
scope pins
182 / 14d
cal
cal certs
47 / 14d
diff
schematic diffs
94 / 14d
grounded chat answers
any teammate · cited
compliance trace exports
FMVSS 305 · IEC 62304
drift & cal alerts
before QA asks
shift handoff bundles
no one writes it up
team health report
knowledge gaps named
galois/ workplace‑intelligence
TRIBAL → STRUCTURED → SHARED

tribal → structured → shared · live · autonomous · always-on

One memory layer, three shapes of data

Wired into your team’s data, whichever shape it takes.

The platform is built for engineers supporting three flavors of team. The indexer doesn’t care which one you are.

Direct hardware
Engineers driving the bench.

R&D and T&M teams running sequences on real instruments through Galois. Every step, register write, and bitstream load lands on the memory bus the moment it happens.

Data it ingests
sequence runs · scope pins · cal certs · engineer notes · schematic diffs
Indirect hardware
Engineers reading from it.

Manufacturing, QA, reliability, and data teams who consume the bench output without driving the instruments themselves. Galois ingests the runs, audits, and drift series and answers questions across them.

Data it ingests
EOL run logs · cal audits · drift series · compliance traces · DUT histories
Software
Engineers shipping around it.

Platform, firmware, and tools engineers whose data lives in CI, services, tickets, and docs. The same indexer, the same context bundles — the memory layer doesn't care where the row came from.

Data it ingests
CI runs · service logs · commit history · tickets · design docs
Ask in plain English

The questions you used to walk down the hall to ask.

Every answer is cited to the actual run, note, schematic, or commit. No hallucinated tribal knowledge.

Why did we change resistor R7 between revisions?

Grounded answer with a citation back to the design-review thread that called for it.

memory_indexer + grounded_answer
Show me every calibration event on the Keithley 2400 in Q3.

Audit-trail RAG across cal certs, run logs, and the instrument profile — not a folder of PDFs.

audit_watcher + memory_indexer
Did we run the safety sequence before the high-voltage step on DUT 47?

Autonomous compliance check across the run log; the answer is a yes/no with the timestamps.

compliance_gate + audit_watcher
What’s the test-outcome variance on unit 47 across the last 12 runs?

Semantic search plus statistical synthesis in one query — drift bands and outliers cited inline.

drift_analyzer + grounded_answer

The closer

When the engineer who wrote the VI leaves, Galois still knows what they did.

No one writes up the handoff. No one updates the wiki. The memory layer was already running while they worked.

Eight services, always on

What’s running while you work.

Each one ships today. Each one watches a slice of bench activity and writes findings back to the memory the answers are drawn from.

instrument_listener
live
Tails the live command log from every connected bench instrument and classifies what just happened.
Watches
SCPI command logs, instrument register writes, FPGA bitstream loads
Produces
Classified events on the memory bus
Cadence
Continuous, streaming
memory_indexer
live
Reads every engineering note, snapshot pin, sequence edit, and run result and turns it into searchable memory.
Watches
Annotations, snapshot pins, sequence locks, run completions, document uploads
Produces
Vector index across 14 memory collections
Cadence
Sub-second after every write
summary_distiller
live
Periodically condenses raw memory into short, retrievable summaries the agent can actually use.
Watches
Vector index entries, recent activity windows
Produces
Distilled summaries embedded back into memory
Cadence
On-schedule, per-team quota
context_compiler
live
Pre-bakes a per-project, per-phase context bundle the moment something interesting changes — the agent never searches mid-conversation.
Watches
Recompile triggers from annotations, pins, sequence locks, run completions
Produces
Versioned, regime-aware context bundles
Cadence
On-event, 60-second fingerprint dedupe
compliance_gate
live
Watches every write and tags it as R&D or compliance, so regulated content can never leak into casual chat.
Watches
All memory writes, project regime setting
Produces
Pool labels on rows, audit-log entries, run-page flags
Cadence
Continuous, per write
audit_watcher
live
Cross-references active sequences against required state — calibration certs, safety steps, signed-off revisions — and raises flags before a human asks.
Watches
Calibration records, sequence definitions, run results, regulatory profiles
Produces
Alerts on the run page, items in the engineer inbox
Cadence
On-event plus daily sweep
drift_analyzer
live
Runs statistical synthesis across the last N runs on each rail, DUT, and channel — surfaces drift, outliers, and trend reversals.
Watches
Test-run results, historical run windows
Produces
Drift alerts, trend annotations on the run page
Cadence
On-event, every new run
grounded_answer
live
When the engineer asks a question in chat, hands the agent the pre-baked bundle so the answer cites actual notes, schematics, and commits.
Watches
User chat message, latest project context bundle
Produces
Cited answer streamed to the chat panel
Cadence
On-query
SDK preview · design partners welcome

The eight services aren’t the whole story.

You know your flows better than we do. The workplace intelligence SDK opens the same memory bus the built-in services run on — so your team can plug in custom ingest, custom processing, and custom emit without forking the platform.

your sourcesworkplace memoryyour surfaces
defineSource()
Ingest
Push your own data onto the memory bus.
import { defineSource } from "@galois/wi";

defineSource({
  id: "linear_tickets",
  watch: linear.events("issue.updated"),
  produce: (issue) => ({
    text: `${issue.title}\n${issue.body}`,
    meta: { regime: "rd" },
  }),
});

Index every Linear ticket as it moves through review.

defineService()
Process
Subscribe to the bus and write findings back.
import { defineService } from "@galois/wi";

defineService({
  id: "fmea_synthesizer",
  subscribesTo: ["run.completed", "annotation.created"],
  async handle(events, ctx) {
    const row = await ctx.llm.synthesize(events);
    ctx.memory.write("fmea", row);
  },
});

Auto-build an FMEA row whenever a run + note pair lands.

defineSurface()
Emit
Forward findings into the tools your team already uses.
import { defineSurface } from "@galois/wi";

defineSurface({
  id: "drift_to_pagerduty",
  subscribesTo: ["drift_analyzer.alert"],
  async handle(alert) {
    pagerduty.trigger({
      summary: `${alert.dut} drift on ${alert.rail}`,
    });
  },
});

Page the on-call when drift_analyzer raises a flag.

The SDK is in design with our first paying customers. If you have a flow you want plugged in, we want to hear about it before we ship it.

See it on your bench.

Connect Galois to your instruments and the eight services start indexing before the first sequence finishes. No buttons to press, no documents to upload.