Add Matrix Heretic room backed by Mac-hosted Ollama over Tailscale #112
Labels
No labels
W6d-automerge-calibration
agent/claude-code
agent/codex
agent/hermes
agent/iskra
agent/ollama
agent/patchwarden
automerge-candidate
class/security-sensitive
cutover-gate
dependency/blocked
dependency/blocks-others
dependency/cross-repo
dependency/needs-confirmation
domain:agents
domain:ci
domain:docs
domain:forgejo
domain:infra
domain:memory
domain:runtime
domain:signal
domain:ux
flow/architecture
flow/blocked
flow/deployed
flow/done
flow/implementation
flow/intake
flow/maintained
flow/observed
flow/ready
flow/refining
flow/retired
flow/review
iterating
judge/codex-candidate
judge/hermes-candidate
judge/low-confidence
judge/needs-refinement
judge/operator-needed
judge/p0
judge/p1
judge/p2
judge/p3
judge/park
judge/patchwarden-candidate
judge/stale-priority
kind/adr
kind/bug
kind/chore
kind/feature
kind/infra
kind/ops
kind/refactor
kind/research
large-impact
merge/auto
merge/manual
merge/manual-dependency-conflict
merge/manual-failing-tests
merge/manual-merge-conflict
merge/manual-missing-review
merge/manual-operator-preference
merge/manual-red-zone
merge/manual-security-sensitive
merge/manual-unclear-scope
merge/manual-unknown
meta
mode:operator-only
mode:patchwarden-iskra-approved
mode:safe-auto
needs-operator-decision
needs-triage
not-ready
observed/erroring
observed/needs-followup
observed/pending
observed/retire-candidate
observed/unused
observed/used
operator-emotional
owner-attention
phase/02
phase/03
priority:p0
priority:p1
priority:p2
priority:p3
proposed
ready-for-agent
ready-for-operator
recovery
review:claude-reviewed
review:codex-reviewed
review:dziadek-reviewed
review:needs-human
risk/exposure
risk/process
risk/product
risk/runtime
safety:external-write
safety:no-prod-mutation
safety:prod-impact
safety:secret-touch
size/large
size/medium
size/small
size/tiny
size/unknown
source/adr
source/agent-generated
source/manual
source/operator-chat
source/voice-note
status:blocked
status:codex-ready
status:merged:pending-evidence
status:needs-evidence
status:operator-needed
status:parked
tier/full
tier/lite
tier/stacked
tier:0-platform-substrate
tier:1-iskra-value-layer
tier:2-tools-products-modules
type:bug
type:chore
type:docs
type:feat
type:policy
type:research
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
pdurlej/platform#112
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Create a dedicated Element/Matrix room on the existing RS2000 Matrix stack that talks to Piotr's local Heretic Ollama model through a secure tunnel to the Mac. This is not an Ollama Cloud setup and should not make the model a global/default assistant.
Working name: Heretic Room. Purpose: a contrarian / red-team / weird-critique side channel for agents and Piotr, separate from normal rooms.
Why
Piotr published a custom Ollama model and wants to use it in a dedicated Matrix/Element room. The model works locally, but Ollama Cloud API does not currently run this custom model. RS2000 should host the Matrix room/bot, but should not host the 16-17 GB model itself; the model should run on the Mac and be reached over a private tunnel.
Verified facts, 2026-05-06
Model
Public Ollama registry page:
Exact model id:
Local Ollama on the Mac lists the model:
Local test passed via:
The model returned
PUBLIC_HERETIC_OK..Not Ollama Cloud-ready
Ollama Cloud API currently does not see this model as an inference model:
So do not design this around
https://ollama.com/api/chat. Treat the registry as distribution only; inference is local/private.Existing Matrix/Element runtime
RS2000 currently runs the Matrix stack:
Relevant platform modules already exist:
modules/synapse/modules/element-web/modules/matrix-well-known/modules/matrix-hub-private/parkedSynapse domain:
Element domain:
Tunnel status
Mac Tailscale is online. Observed Mac Tailscale IP at time of check:
Local Ollama responds on the Mac:
But direct RS2000 -> Mac Tailscale IP does not currently work:
And on the Mac:
Therefore this needs an explicit tunnel/serve/proxy path.
Recommended architecture
Preferred v0
High-level flow:
Tunnel option A: Tailscale Serve
On the Mac, expose local Ollama to tailnet only. Verify exact syntax with
tailscale serve --help; current local CLI supports this shape:Then verify from RS2000 using the Mac's Tailscale DNS name or tailnet URL shown by:
Expected tests from RS2000:
Do not use Tailscale Funnel for v0. Funnel would make this internet-facing and is not needed.
Tunnel option B: SSH reverse tunnel fallback
If Tailscale Serve is not reliable enough, use an SSH reverse tunnel from the Mac to RS2000:
Then the Matrix bot on RS2000 can call:
For production, persist this via
launchdon the Mac, not a hand-held terminal session. Considerautosshor equivalent restart behavior if needed.Bot design
Recommended v0 bot behavior:
@heretic:pdurlej.com.#heretic:pdurlej.comor private invite-only room.!heretic.API call shape:
Platform changes to make
Add a new module, likely:
Suggested files:
If implementing bot code in-repo, keep it small and isolated, e.g.:
or use an existing Matrix bot framework if the platform already standardizes on one.
Potential implementation options:
matrix-niobot: most controllable, small custom bridge.maubot: good if we already want a plugin-based Matrix bot runtime.For v0, prefer the smallest maintainable bot over a large framework unless maubot is already deployed.
Secrets/config
Do not commit secrets.
Expected config/secrets:
If using Infisical, document the path and names, not values.
Security requirements
:11434to the public internet.!heretic.Acceptance tests
Tunnel tests
From RS2000:
Direct model test
From RS2000 through the final endpoint:
Expected response contains:
Matrix smoke
In the dedicated Element room:
Expected bot reply contains:
Persistence/restart
Non-goals
Open questions for implementer
matrix-niocontainer, or do we want to introducemaubotas a reusable bot runtime?Heretic,Heretic Lab, orContrarian Review?!hereticprefix only, or should the bot respond to mentions too?Useful local commands already verified
Parked from M08 to M10 per Iskra supplemental triage. Heretic Matrix/Ollama room is useful future product work, not current Persona/OpenClaw critical path. No runtime mutation was performed.
Parked (p3, M10 closure plan #653 + Judging Claw priority). Reactivate when the Matrix-Ollama Heretic room is actually wanted.
{
"confidence": 5,
"effort_hint": "medium",
"escalation": {
"kind": "none",
"reason": ""
},
"evidence_refs": [
{
"note": "Issue proposes a dedicated Matrix room for a local Heretic Ollama model via private tunnel.",
"type": "forgejo",
"value": "issue-title-body-labels-and-target-snapshot"
},
{
"note": "Body states the room is a contrarian side channel and not a global default assistant.",
"type": "forgejo",
"value": "issue-body-purpose"
},
{
"note": "Snapshot labels mark the issue as priority p3 and parked.",
"type": "snapshot",
"value": "target-snapshot-labels"
}
],
"impact": 2,
"judge_actor": {
"name": "iskra",
"runtime": "openclaw"
},
"judged_at": "2026-06-08T01:01:00Z",
"labels_to_apply": [
"judge/p3"
],
"piotr_fit": "medium",
"priority": "p3",
"rationale_summary": "This is P3 observe work because it is an interesting parked side-channel experiment rather than core platform delivery.",
"reach": 2,
"recommended_next_action": "observe",
"rerun_reason": "no_prior_judgment",
"schema": "openclaw.judge.v0",
"target": {
"kind": "issue",
"number": 112,
"repo": "pdurlej/platform"
},
"target_snapshot": {
"body_hash": "sha256:f6055464e8b7d1d72a5fd9c4f39003963cb44b795d80d8f0a69c6a7902b85a5c",
"commit_count": null,
"evidence_hash": "sha256:13226464f65860ccbacf9ed251410a51e460beddb4c34563738e230eaffbce89",
"head_sha": null,
"labels": [
"priority:p3",
"status:parked"
],
"labels_hash": "sha256:70bfe69a42f166841b4645bc96bcb858084f4174783502fb4cef5ef76e679e84",
"state": "open",
"title_hash": "sha256:4eef14e26c3139d33b491108b087331fb6011e0a2747f220e41c7af0d546fd7f",
"updated_at": "2026-06-01T08:53:13+02:00"
},
"top_caveat": "Keep it isolated from default assistant routing and avoid exposing the Mac-hosted model broadly."
}