omp-fabricBLOCK
Fabric for OMP: deterministic, LLM-free orchestration of the Oh My Pi host toolchain
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
A programmable tool and agent runtime for [OMP](https://github.com/can1357/oh-my-pi)
One type-checked program for tools, MCP, agents, workflows, actors, mesh, councils, and recursion.
[](https://www.npmjs.com/package/omp-fabric) [](https://arcprize.org/scorecards/d4c56c67-136b-4643-b648-62ae28fe2a54) [](https://github.com/tickernelz/omp-fabric/actions/workflows/test.yml) [](https://github.com/can1357/oh-my-pi) [](LICENSE)
🏆 100% on ARC-AGI-3. A Fabric-powered agent won all 25 environments in one 22.4-hour session with 4 minutes of human time ($1,349 in model spend).
Fabric gives OMP one programmable tool called fabric_exec, which composes core tools and MCP servers with captured extension tools in a checked TypeScript program. That program can call agents or actors, use durable coordination, and run inside QuickJS. Trusted workloads that exceed WASM32 memory may use the unsafe Node process. After execution, the conversation receives the result of the program's branches, loops, fan-out, and data flow.
Why Fabr
27c09dd951a7OBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add omp-fabric --env JOINED_PASS=${JOINED_PASS} --env TYPESAFE_API_KEY=${TYPESAFE_API_KEY} -- npx -y [email protected]{
"mcpServers": {
"omp-fabric": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"JOINED_PASS": "${JOINED_PASS}",
"TYPESAFE_API_KEY": "${TYPESAFE_API_KEY}"
}
}
}
}Exposed tools (118)
88 read · 22 write · 8 destructive. Blast radius: 8 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
Inspect | read | phase-description-secret |
Lifecycle | read | configure-description-secret |
Probe | read | check |
abort | read | Abort an uncommitted same-invocation hypothesis and optionally its active certificate |
active | read | Active workflow |
actorStatus | read | Read one persistent actor |
actors | read | List persistent actors. Default scope |
agents | read | Test agents |
ask | write | Send a message to a persistent actor through its live owner and wait for its next response. Optional model/thinking values apply only to this activation. |
bash | write | Execute a shell command |
call | read | demo call |
cancel | destructive | Clear a pending compaction intent before the host commits it |
cascade | read | Rank files by how often they historically changed in the same commits as the seed files, normalised so ubiquitous files (lockfiles, changelogs) do not dominate. Answers which files a change will drag along, which text search cannot. |
checkGoal | write | Run the goal predicate and report pass/fail; publishes state.goal.met when it passes |
classify_result | write | Report whether the exact Fabric action may run without human approval |
cleanup | destructive | Remove a completed agent |
clearMessages | destructive | Clear a persistent actor |
commit | write | Consume one same-invocation certificate and atomically attempt bounded declared-file operations with rollback and postconditions |
commute | read | Commutative effects |
compact | read | Request an advisory compaction of a running OMP-runner child agent |
complexity | read | Count current structural decision points and compare them with the complexity ledger |
create | write | Create a persistent actor with independently selected session or project storage. Use scope |
debug-flake | read | Diagnose a test that passes alone and fails in a suite. |
delete | destructive | Delete shared mesh state, optionally with compare-and-swap version checking |
demo | read | Demo provider |
dependency | read | Required dependency |
docs.search | read | search indexed documentation |
echo | read | Echo a string |
echo-value | read | Echo a value |
effects | read | Effect conflicts |
emit | read | Emission provider |
example | read | example |
expand | read | expand |
export | read | Export a live project actor |
extensions | read | fake extensions |
external | read | External provider |
files | read | files |
flaky-ping | read | Ping from a serve-once fixture |
followUp | read | Queue a follow-up for Main or a running one-shot agent, or enqueue a persistent actor mailbox message. The stable id alias main targets the root user-facing OMP session. Non-local targets route over the project mesh. |
get | read | Read a versioned value from shared mesh state |
get-model-schema | read | Return a model schema |
github.get_repo | read | Get a GitHub repository |
goal | write | Set the executable goal predicate (Schema |
graph | read | Inspect component requirement/provision edges and detected dependency cycles. |
grep | read | Search source files for matching text |
handoff | write | Schedule an OMP trajectory handoff after the current outer fabric_exec result, then wait for implementation at that boundary |
history | read | Fold the transition log from its representation archive boundary into an ordered label graph |
hypothesize | read | Durably bind a falsifiable hypothesis and nonempty typed evidence to the current state and workspace |
import | write | Import a project-independent template from the global registry into the current project as a fresh live actor with no inherited history (no messages, session, or run logs). Identify the template by id or name; optionally rename the imported actor with \ |
inspect | read | Inspect stored records |
lease | read | Lease provider |
legacy | read | Legacy provider |
list | read | List agent participants locally, across the current lineage, or across the project |
log | write | Read an actor or agent run |
main | read | Return the root user-facing Main OMP agent target. The stable alias main is also accepted by agents.steer and agents.followUp. |
manual-only | write | Run only when explicitly invoked. |
mcp | read | Mock MCP provider |
members | read | List the unified project topology of roots, agents, and actors |
memory | read | Memory provider |
messages | read | Read a persistent actor |
misleading | read | claims read |
models | read | List models exposed by the selected runner. Claude models are enumerated from the installed Claude Code runtime, not hard-coded. |
mutable | read | Mutable catalog |
mutate | read | mutate one value |
omp | read | OMP tools |
open | read | open |
peers | read | List other live root OMP sessions sharing this project mesh. The dashboard-owning session remains Main; these targets are named peers. |
pick | read | Pick a session |
ping | read | emit rapid progress |
probe | read | Probe normalization stages |
project_status | read | Report project status |
prune-disk | read | Reclaim disk safely on a dev box. |
publish | write | Append a durable event to a mesh topic, optionally addressed to one actor |
put | write | Write shared mesh state, optionally with compare-and-swap version checking |
read | read | Read a local file |
recall | read | Search historical session memory |
release-risk | read | Review launch plans for operational risk. |
reload | write | Restart one component, or all loaded components, with rollback to the previous revision on activation failure. |
remove | destructive | Stop and remove a persistent actor. Default scope |
request | read | Request an advisory compaction of the host session |
review | read | Review <plans> & |
run | write | Delegate work to a background agent |
scan | read | Scan |
schema | read | approval probe |
self | read | Return this caller |
sessions | read | List all live root OMP session agents in the project, including the current lineage root and peers, with symmetric participant identities. |
setDeliveryPolicy | read | Replace a project actor or global template delivery policy. steer/followUp require an explicit triggerTurn choice; mailbox/nextTurn require false. |
setEvents | read | Replace a persistent actor |
setFollowUpMode | write | Set how queued follow-up messages are delivered to a one-shot agent: all when it finishes, or one per completion (default). Local agent only. |
setInstructions | read | Replace an actor\ |
setModel | destructive | Change or clear a persistent actor model binding. Session scope is the default; project scope explicitly pins the shared definition default. |
setSteeringMode | write | Set how queued steer messages are delivered to a running one-shot agent: all at once after the current turn, or one per turn (default). Local agent only. |
setThinking | destructive | Change or clear a persistent actor reasoning-effort binding. Session scope is the default; project scope explicitly pins the shared definition default. |
setTools | read | Replace a persistent actor |
ship-release | read | Cut and verify a tagged npm release. |
slow | read | slow call |
slowext | read | captured extension stub |
spawn | write | Start a child agent through OMP or Claude Code and return a handle immediately. Detached runs send Main a follow-up on terminal completion when agents.notifyOnComplete is enabled; use wait when this Fabric program needs the result and status only for progress inspection. |
spec | read | Speculation observability provider |
stats | read | Counters for this session |
status | read | Get the latest status of any known project participant |
steer | read | Steer Main, a running one-shot agent between turns, or a persistent actor through its mailbox. The stable id alias main targets the root user-facing OMP session. Non-local targets route over the project mesh. |
stop | write | Stop a local or remotely owned agent or actor that advertises the stop capability |
storage | read | Filesystem discovery capabilities |
stream | read | emit progress on demand |
subagent | read | captured extension stub |
subscribe | write | Create a durable source-qualified participant lifecycle subscription. Events are delivered to Main by default or to another participant through steer/follow-up routing. |
subscriptions | read | List durable participant lifecycle subscriptions, optionally filtered by source or target |
svc | read | Law-test service |
switchModel | read | Switch Main |
tell | read | Queue a message through a persistent actor |
transition | read | Append a labeled, validated state transition and compare-and-swap advance the head |
unsubscribe | destructive | Remove a participant lifecycle subscription |
verify | read | Fail-closed verification that may issue one fresh invocation-bound single-use certificate |
wait | read | Wait for a previously spawned child agent |
web_search | read | captured host web search |
write | write | Write a file |
write-docs | write | Write a developer guide from working code. |
Trust audit
BLOCKgrade F · trust 53/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | FAIL |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (11 observation(s))
- Network
- none-observed
- Shell
- declared (4 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
host-event-payload.ts
exec(sql: string): void;
exec(sql: string): void { this.database.exec(sql); }const RARE_FACT = "Pinned fact: quasarneedle_7f91 maps to Ωmega雪 and port 43117.";
const coldRareFact = "cold_exact_quasar_7f91 Ωmega雪 address=43117";
apiKey: "sk_test_secret_value",
cancel, cleanup, clearMessages, delete, remove, setModel, setThinking, unsubscribe
const bridgeNormalize = new Function(
const base = sqliteDriver() as unknown as { new (target: string, options?: unknown): { exec(sql: string): void } };setSqliteDriver(class extends base { exec(sql: string) { if (/using\s+fts5/i.test(sql)) throw new Error("no such module: fts5"); return super.exec(sql); } } as unknown as SqliteDriver);const hash = crypto.createHash("sha1").update(sessionFile).digest("hex").slice(0, 16);sha1 = createHash("sha1").update(await readFile(path.join(root, file))).digest("hex");import { registerCompactionHook } from "../../dist/compaction/hook.js";fs.readFileSync(fileURLToPath(new URL("../../package.json", import.meta.url)), "utf8"),import { normalizeSession, readSessionHeader } from "../../dist/memory/normalize.js";import { MemoryProvider } from "../../dist/providers/memory-provider.js";import { resolveAgentDir } from "../../src/core/agent-dir.ts";const rare = index === 0 ? " rarelexeme_000 Ωmega雪" : "";
{ scope: "project", query: "ΩMEGA雪" },expect(tokenizeLexical("CAFÉ café Ωmega雪 snake_case 42")).toEqual(["🏳️🌈".repeat(60),
expect(wrapPlainText("👩💻x", 2)).toEqual(["👩💻", "x"]);const long = `${"a".repeat(9_000)}secret-tail👩💻`;expect(assistant?.text).toContain("👩💻");const before = "const icon = '👩💻-old';";
Gates applied: no_behavioural_pass.
27c09dd951a7full audit observations/trust-audit/mcp-server/tickernelz__omp-fabric.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | 27c09dd951a7 | BLOCK | F | 53 | first audit |
Questions
What is the omp-fabric MCP server?
Fabric for OMP: deterministic, LLM-free orchestration of the Oh My Pi host toolchain
What tools does omp-fabric expose?
118 in total: 88 read-only, 22 that write, and 8 that can delete or overwrite (cancel, cleanup, clearMessages, delete, remove). Every one is listed on this page with its risk.
Is omp-fabric safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (53/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 8 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does omp-fabric need?
It reads JOINED_PASS and TYPESAFE_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How current is this page?
The grade is for one exact copy of the source (27c09dd951a7), read on 2026-10-11. The repository is watched and re-audited when it changes.