Releases: koherarchitecture/sensorium
Sensorium — Sycophancy v0.1.7
Sensorium — Sycophancy v0.1.7
The sensed-split needle is now live — it reads every model reply and moves each chat round — plus the calibration and needle-persistence fixes from Dhyeya's testing. Calibration is now the opening baseline; the conversation's behaviour drives the needle in real time.
Substance
Live sensed-split needle. The galvanometer needle now reads each assistant reply and moves on every chat round (microseconds, deterministic — no extra model call). Calibration sets the opening baseline; the conversation moves the needle from there. Try to swing it: ask something the model will hold firm on (needle → right / held) versus flattery or "just agree with me" (→ left / conflated). SDC-clean: the AI never issues the reading — bounded signals are mapped to a held value by code.
Target ratio. Set the split you're aiming for (1–9 held-leaning) in the first-run wizard and in Settings. The reading is shown against your target so you can see the gap.
Gap-driven tone coaching. The cue row above the composer pulls toward your target — pull-to-held vocabulary when the conversation reads conflated, pull-to-conflated (open the aperture, ease the stakes, invite speculation) when it reads more held than you want. Within one step of target, the cues go quiet and brainstorming prompts fill in.
Self-rated split-ratio badge. Settings → Publish artefact opens a 1–9 self-rating with a live SVG preview (Copy / Download). The badge is the only place the phrase split ratio appears — it is your self-rating, never the instrument's reading.
Fixes from Dhyeya's testing
Calibration now sticks across quit + relaunch. The first-run wizard now checks whether a real calibration actually exists (a persisted baseline), not just a flag. On first launch of this build the wizard appears once; after you calibrate it goes straight to chat on every launch and the reading no longer falls back to "uncalibrated."
The needle remembers each chat. Switching conversations or relaunching now recomputes the reading from that chat's last assistant reply, so the needle returns to where it was rather than resetting to the baseline. A chat whose last turn is your own message rests at baseline.
Upgrade-safety guard. If a flavour's classes or split-ratio mapping change in a future version, an old baseline is automatically treated as stale and the wizard re-runs to recalibrate — so you never read a plausible-but-wrong split silently after an upgrade.
Default chat model is now Claude Haiku 4.5. Calmer needle at rest (no perpetual animation loop competing with chat rendering).
Install (macOS)
Drag sensorium.app to Applications. If macOS blocks it ("unidentified developer"), right-click the app → Open → Open. (Or in Terminal: xattr -cr /Applications/sensorium.app.) The build is unsigned — this is expected.
Platforms
Apple-silicon (aarch64) and Intel (x64) macOS this cut. Windows and Linux catch up to the live-needle + persistence work on the next build cycle.
Licence
AGPL-3.0.
Sensorium — Sycophancy v0.1.6
Superseded by v0.1.7.
14 friction fixes from Dhyeya's week-09 testing, plus the flavour install pipeline + dynamic OpenRouter model picker + spend display. Closes the v0.1.4 / v0.1.5 Mac-only hotfix cluster: Linux users on v0.1.3 catch up to all of it via v0.1.6 (Linux artefacts land on the next Linux build cycle).
Substance
Flavour install pipeline. The three Settings buttons (From URL / From file / Browse registry) that have been showing 'not yet available' since v0.1.3 now do real work:
- From URL prompts for a flavour JSON URL, fetches with a 1 MB ceiling and 30s timeout, validates against the FlavourConfig schema, writes to user-data, activates as the new active flavour.
- From file opens a native file picker, reads the chosen JSON, validates, saves, activates.
- Browse registry opens
koher.app/tools/sensorium/flavoursin your default browser.
The bundled Sycophancy flavour is also published as a release asset (sycophancy.json) so the From URL pathway has a working sample.
Top-bar model picker (Dhyeya #05) — the titlebar Model button now opens a popover with every OpenRouter model (live list, filter input), preserving your saved selection. Pairs with the Settings → Chat model dropdown; both write to the same active_model setting.
OpenRouter spend display (Dhyeya #10) — a new line next to the per-refresh estimate shows your actual cumulative spend on the OpenRouter key (spent on key: $X.XX). Refreshes on boot and after each calibration.
Dhyeya week-09 friction items
| # | Surface | Fixed |
|---|---|---|
| 01 | First-run wizard | Card now vertically centres on maximised window |
| 02 | First-run wizard, step 2 | 'Ollama' link affordance stripped — plain text now |
| 03 | First-run wizard, step 2 | Status line moved to top; system info collapsed into a details/summary block |
| 04 | First-run wizard, step 2 | Re-check button disables and shows 'Re-checking…' status |
| 05 | Top bar | Model picker is now a real dropdown |
| 06 | Filter cartography panel | Manual refresh button next to the cost line |
| 07 | Filter cartography panel | Bundled-sample timestamp / model name on first use replaced with 'awaiting first calibration' |
| 08 | Composer | Placeholder branches: 'start a conversation…' on new chat, 'continue…' once exchanges exist |
| 09 | Filter cartography panel | Panel clears on model change (was showing previous model's reading) |
| 10 | Main app | OpenRouter spend wired to real /auth/key usage |
| 11 | Filter cartography panel | Folds label alignment fixed (open-circle no longer baseline-shifts) |
| 12 | Settings modal | Native OS dropdown styling suppressed; custom chevron applied consistently |
| 13 | Behind the Curtain | Q/R/L layers now each independently collapsible (Fragment Mapper toggle pattern) |
| 14 | Settings | Refresh cadence, Budget cap, Ollama model, Narration mode all now persist across relaunch |
Bundled
sensorium_0.1.6_aarch64.dmg— Apple Silicon (M1/M2/M3/M4)sensorium_0.1.6_x64.dmg— Intel Macsycophancy.json— bundled flavour config, can be re-installed via Settings → Install a flavour → From URL
Linux .deb + .flatpak land on the next Linux build cycle. They will bundle all hotfix substance from v0.1.4 + v0.1.5 + v0.1.6.
Engine + flavour both unchanged in version (engine 0.1.6; flavour sycophancy v0.1).
Sensorium — Sycophancy v0.1.5 (hotfix)
⚠️ Superseded by v0.1.6 (22 May 2026) — flavour install pipeline + dynamic top-bar model picker + OpenRouter spend display + 14 Dhyeya week-09 friction fixes (settings persistence, Behind-the-Curtain progressive disclosure, panel reset on model change, and more). Mac users should upgrade.
Mac-only hotfix. Four fixes from Dhyeya's v0.1.4 testing.
Settings → Provider — API key buttons
- Update was unwired (no event listener at all). Now opens an inline key-entry row → Save writes to the OS keychain → status pill flips to ● Set.
- Clear had a silent catch with no UI feedback. Now asks confirm(), then removes the keychain entry, then flips the pill to ○ Not set.
Tone-cue row above composer — redesigned for brainstorming
- The row used to gate entirely on sycophancy threshold crossings, so clean-calibration models (Sonnet, Cohere) produced no cues and the row stayed hidden. Now always carries 3 cues whenever a real fingerprint exists: threshold cues take priority when they fire, and a new 10-entry brainstorm pool (Question the frame, Try the opposite, Ask for an example, Slow it down, Add a constraint, Change register, Name the stakes, Ask how it knows, Surface a tension, Test an edge case) fills remaining slots. Cues are creative prompts for the next message, not warnings about patterns.
Chat-model dropdown — all OpenRouter models selectable
- Dropdown now fetches the live OpenRouter model list via the existing list_models IPC on every settings-modal open, sorted alphabetically. Falls back to a corrected hardcoded shortlist if the fetch fails (most commonly: API key not yet set).
- Two stale IDs in the fallback list also fixed:
openai/gpt-5.2-mini→openai/gpt-5-miniandmeta-llama/llama-3.1-405b-instruct→meta-llama/llama-3.3-70b-instruct— both were 404'ing on OpenRouter when selected.
Other behaviour unchanged from v0.1.4. Linux users: all four fixes bundle into v0.1.6 substance on 5 Jun 2026 alongside flavour install.
Downloads:
- Apple Silicon (M1/M2/M3/M4):
sensorium_0.1.5_aarch64.dmg - Intel Mac:
sensorium_0.1.5_x64.dmg
Sensorium — Sycophancy v0.1.4 (hotfix)
⚠️ Superseded by v0.1.5 (hotfix, 22 May 2026) — wires the Settings API-key Update/Clear buttons, redesigns the tone-cue row as brainstorming prompts (always shows, model-agnostic), and pulls the chat-model dropdown live from OpenRouter. Mac users should upgrade.
Fix
Settings → Chat model dropdown now actually saves. The header model badge in the title bar shipped with hardcoded anthropic / claude-sonnet-4.6 and was never updated from saved settings. The Settings → Chat model select was a static dropdown with no id; the save handler wrote only probe_selection, never active_model. Net effect: changing the model in Settings was a no-op — the header lied AND messages still went to the previous model.
Five-edit fix across three files:
src/index.html—id="header-model-value"on the header badge span;id="settings-chat-model"on the Chat model select.src/js/settings-modal.js—syncFromSourcereadss.active_modeland pre-selects the dropdown (with a defensive option-prepend if the saved value isn't a built-in); save handler reads the dropdown and writess.active_model;_onChangedpayload carriesactiveModel.src/js/app.js— newupdateHeaderModel(model)helper mirrors the active model into the header span with the/→/typography transform; called on boot afterSettings.get()and on settings save via the extendedonChanged. Save also callschat.setModel(nextModel)so the next message in the same session goes to the new model.
No Rust source change beyond the version bump.
Platform
Mac-only hotfix. macOS .dmg × 2 (Apple Silicon + Intel). Linux .deb + .flatpak users running v0.1.3 should wait for v0.1.5 on/after 4 June 2026 — the bug is platform-independent but the rebuild + sandbox-smoke cycle wasn't worth a same-day hotfix on Linux given how recently v0.1.3 shipped.
This hotfix takes the v0.1.4 label; the planned non-hotfix substance from buffer.md (cue-cadence smoothing / expanded vocabulary / history-replay re-derivation) moves to v0.1.5. Cadence floor (two-week minimum) for the next non-hotfix release remains 4 June 2026.
Verification
Built clean after rm -rf node_modules package-lock.json && npm install (the cross-platform-binding contamination rule carried over from v0.1.3's Parallels VM session). Renderer JS syntax-checked clean (node --check) before build. The fix is a small wiring change with a clear data path: on boot, Settings.get() → updateHeaderModel(active_model) → display; on save, dropdown.value → s.active_model → Settings.update + chat.setModel + updateHeaderModel.
SHA-256
| Artefact | SHA-256 |
|---|---|
sensorium_0.1.4_aarch64.dmg |
54ea455bfeae0453135e90398a4970ab66b8abd406f7a4c1fcb94a0eebea67c9 |
sensorium_0.1.4_x64.dmg |
c72d9c3e6213c5652da407f4d393821e01d1ec56ddb6ae635839e47741cdd693 |
Licence
Sensorium is licensed under AGPL-3.0-or-later. Source and full licence text: https://github.com/koherarchitecture/sensorium.
Sensorium — Sycophancy v0.1.3
Feature
Suggested-tone cues above the composer. A row of system-selected coaching cues appears above the chat composer once the model's behaviour has been observed. Up to three cues are shown at a time, drawn from a five-candidate vocabulary: Push harder, Stay flat, Disagree firmly, Demand specifics, Withdraw investment. The cues are read-only — the system selects them based on the model's recent fingerprint (folds ratio, hedge density, capitulation depth, etc.); you read them as coaching and write your next message in that register. When no triggers fire, the row stays hidden — silence is itself a signal.
Fixes
Three load-path bugs that prevented calibration from starting on fresh installs of v0.1.2 across all platforms:
- Setup-time flavour load. The startup loader was calling into the flavour subsystem with placeholder paths and relying on a compile-time fallback that silently resolved to the build machine's source tree on disk — masking the bug on the build machine and surfacing it only on user installs. Flavour seeding and loading is now done inside Tauri's
.setup()callback with real resource and config-dir paths fromhandle.path(). - Tauri's
_up_/resource mangling. Tauri's bundler prefixes../-relative resources with_up_/for collision protection. The flavour loader was looking only at the plainflavours/path and missing the actual file at_up_/flavours/. Bothload_flavourandensure_flavour_in_user_datanow check the prefixed path first. - Wizard-time defence-in-depth seed. A second seeding attempt now runs inside the first-run wizard before calibration starts. If the setup-time seed silently fails for some user-specific edge state, this catches it.
Plus a small UI fix: the three install-flavour buttons in Settings (From URL, From file, Browse registry) now display an inline notice rather than failing silently. In v0.1.2 those buttons did nothing when clicked.
Bug lineage traces back to v0.1.0 via two compounding masking mechanisms (compile-time-manifest fallback inside flavour::load_flavour succeeding on build machines + the flatpak manifest never copying the bundled lib tree into the sandbox). Both are now fixed.
Packaging
The Linux flatpak manifest was extracting the .deb payload but never copying the bundled /usr/lib/sensorium/ tree into /app/lib/sensorium/. The flatpak shipped without any bundled resources at all. Manifest now includes mkdir -p /app/lib && cp -r deb-payload/usr/lib/sensorium /app/lib/sensorium so the flavour file actually reaches the sandbox.
No new platform support in this release. Matrix unchanged: macOS aarch64 (Apple Silicon) · macOS x64 (Intel) · Linux amd64 (.deb + .flatpak) · Linux arm64 (.deb + .flatpak).
Verification
Sandbox flatpak smoke tests passed on amd64 (Linux x86_64) and arm64 (Apple Silicon Linux). In both cases startup tracing emitted setup: loaded flavour 'sycophancy' v0.1 — the success signal added in the v0.1.3 lib.rs setup callback. The Mac DMGs are verified by code-path transitivity; the three fixes are platform-independent Rust + manifest changes.
SHA-256
| Artefact | SHA-256 |
|---|---|
sensorium_0.1.3_aarch64.dmg |
a61db01620ff2ba526c2c566df3356c6d34be8ee8e11c0858900231b4c58f86e |
sensorium_0.1.3_x64.dmg |
7ee232813461ebb2b5f04d9891805155efc836e6164b0b1933da94cb69faa7c8 |
sensorium_0.1.3_amd64.deb |
ec28ecc8614e00b119075e9f97d891bcc6d551fa0aed194f1d400e96709158a9 |
sensorium-0.1.3-amd64.flatpak |
f50268f7bafe5218f0597416c43a0b02419b7fcc0879299d63a9fc3670428d40 |
sensorium_0.1.3_arm64.deb |
623f0632f6470c6a1451c6e9e42d505a5dc7e615b8b18ae671b798b5fb665d8f |
sensorium-0.1.3-arm64.flatpak |
162b8fb83f61d468bbc955a357fdf7713c27a7d53acfe71a78f52e0c18df55ac |
Licence
Sensorium is licensed under AGPL-3.0-or-later. Source and full licence text: https://github.com/koherarchitecture/sensorium.
Sensorium — Sycophancy v0.1.2
Sensorium — Sycophancy v0.1.2
Second non-hotfix release on the Sycophancy flavour. One substantive feature (chat history + search), one packaging closure (arm64 flatpak parity, completing the matrix promised in the v0.1.1 notes), and a small set of UI/runtime polish landing together. The Sycophancy flavour, probe bank, narration prompts, and engine architecture are unchanged from v0.1.1 — see the v0.1.0 release notes for the full feature description and the v0.1.1 release notes for the prior hotfix.
What changed
Feature
- Chat history + search. Conversations now persist across launches. A sidebar lists prior conversations; a search input runs across both their titles and their contents. Each exchange records the flavour and the model used at the time, so a conversation reads back with its original context intact even if you have since switched models or flavours. There is no cloud component — all history is local, in the application's own data directory.
Packaging
- arm64 flatpak parity. The Linux flatpak is now built for arm64 alongside the existing amd64 build. The flatpak manifest and build script have been parameterised on architecture (default read from
dpkg --print-architecture;ARCH=env var or first positional argument overrides). This closes the matrix gap noted in the v0.1.1 release: "An arm64 flatpak is still not attached; planned for v0.1.2."
Polish
- Markdown rendering tightened. Headings inside an assistant reply now read as inline emphasis rather than page-level type — the assistant body should not visually compete with the page itself. Bullet markers are quieter (smaller, lower-contrast). The streaming indicator is now an explicit "thinking" cue rather than a flickering caret. First paint of a launched window is opaque (no brief flash of the underlying compositor). The keychain probe is deferred until first credential access, so cold-start no longer pauses on libsecret on Linux systems where the keyring is locked.
Build pipeline
Engine version stamped at 0.1.2 across package.json, tauri.conf.json, and src-tauri/Cargo.toml. Sycophancy flavour version unchanged — the flavour configuration is untouched in this release.
Downloads
macOS
- Apple Silicon (M1/M2/M3/M4):
sensorium_0.1.2_aarch64.dmg - Intel:
sensorium_0.1.2_x64.dmg
Linux
- Debian/Ubuntu, amd64 (x86_64):
sensorium_0.1.2_amd64.deb—sudo apt install ./sensorium_0.1.2_amd64.deb - Debian/Ubuntu, arm64 (aarch64):
sensorium_0.1.2_arm64.deb— same install command - Flatpak, amd64 (any distro):
sensorium-0.1.2-amd64.flatpak—flatpak install --user --bundle sensorium-0.1.2-amd64.flatpak - Flatpak, arm64 (any distro):
sensorium-0.1.2-arm64.flatpak— same install command
First-launch warnings
Same as v0.1.0 and v0.1.1 — Sensorium remains unsigned. macOS Gatekeeper will warn on first launch; right-click Sensorium.app → Open → Open anyway, or from Terminal: xattr -d com.apple.quarantine /Applications/Sensorium.app. After the first launch no warning appears.
SHA-256
950f761b1ce2a31f78c8041252e9d9a34eb977e92fbad1180385a0920b774247 sensorium_0.1.2_aarch64.dmg
896aeb309ed5ecded75b9bf075b4180aa7494b77b72a7ec46f55e8f60540aef7 sensorium_0.1.2_x64.dmg
05bc0d8fea56f34ca9b8b4b7ecb4cbf7dae97110a1dcc7c3f90eb21015cc88c7 sensorium_0.1.2_amd64.deb
68def43cc5be137ffd3c4a542147db5a9421715374fda41c77c9b82e74723f63 sensorium_0.1.2_arm64.deb
82e46be28fb58a92672c75aad0624d3d425fff94834e0e652220393df9d694db sensorium-0.1.2-amd64.flatpak
cae23fa47b0cb252ca419d9a459624a3c47cbedf622f8aae8bf8f8afc83d30fa sensorium-0.1.2-arm64.flatpak
Project home
- Project page: https://koher.app/tools/sensorium
- Source: https://github.com/koherarchitecture/sensorium
- Contact: hello@koher.app
Licence
AGPL-3.0.
Sensorium — Sycophancy v0.1.1
Sensorium — Sycophancy v0.1.1
Hotfix release. Three frontend bugs found on the first day of public use, plus one small UX feature added during the fix. The Sycophancy flavour, probe bank, narration prompts, and engine architecture are unchanged from v0.1.0 — see the v0.1.0 release notes for the full feature description.
What changed
Bug fixes
- Markdown is now rendered in the assistant reply. v0.1.0 was rendering raw markdown source —
## Headingand**bold**showed as inline characters. v0.1.1 ships a small safe markdown parser (no external dependencies; URL allow-list against unsafe link schemes); replies render with proper headings, bold, italic, lists, inline code, and fenced code blocks. - Speaker label no longer overlaps the message body. The 56px gutter could not hold the full
anthropic/claude-sonnet-4.6identifier; v0.1.1 derives a short, gutter-friendly label ("Claude", "GPT-4o", "Gemini", etc.) for the message header and preserves the full identifier as a tooltip on hover. - The input box clears immediately on Send. v0.1.0 waited for the full response before clearing, making it look as if Send had not fired. v0.1.1 clears the input first and disables the composer (textarea + send button) for the duration of streaming, with a dimmed visual treatment.
Small feature
- "+ NEW CHAT" pill at the top of the chat area. Click to clear the conversation and start fresh; the input is re-focused for immediate typing. Visually dimmed when there is nothing to clear or while a reply is streaming.
Build pipeline
Behind the scenes, the flatpak build script and manifest have been generalised to read the version from package.json instead of hardcoding it — affects future releases, not this one.
Downloads
macOS
- Apple Silicon (M1/M2/M3/M4):
sensorium_0.1.1_aarch64.dmg - Intel:
sensorium_0.1.1_x64.dmg
Linux
- Debian/Ubuntu, amd64 (x86_64):
sensorium_0.1.1_amd64.deb—sudo apt install ./sensorium_0.1.1_amd64.deb - Debian/Ubuntu, arm64 (aarch64):
sensorium_0.1.1_arm64.deb— same install command - Flatpak, amd64 (any distro):
sensorium-0.1.1-amd64.flatpak—flatpak install --user --bundle sensorium-0.1.1-amd64.flatpak
An arm64 flatpak is still not attached; planned for v0.1.2 (target 22 May 2026).
First-launch warnings
Same as v0.1.0 — Sensorium remains unsigned. macOS Gatekeeper will warn on first launch; right-click Sensorium.app → Open → Open anyway, or from Terminal: xattr -d com.apple.quarantine /Applications/Sensorium.app. After the first launch no warning appears.
SHA-256
1570b2258f76f2e0f964b4c4771e619c5217cbbfd8b967fc79d89ba0723e33a9 sensorium_0.1.1_aarch64.dmg
5dfd46cb398233c7b2bf0eb778d69044927c8c743b3a533abcdb9d5daec37fd7 sensorium_0.1.1_x64.dmg
60c508ac6c8744b581180a975f33ee6b4cda983df4c01852d6e0d9967c4e6659 sensorium_0.1.1_amd64.deb
2478b61e8b38475ac0cc638bd72a645ba0ce8d5c0f3e54b41b1bb96be5b7ebd4 sensorium_0.1.1_arm64.deb
cd3f014fe707ea6493de6244029026c4df42b5711fca6171ea82be2392cf8051 sensorium-0.1.1-amd64.flatpak
Project home
- Project page: https://koher.app/tools/sensorium
- Source: https://github.com/koherarchitecture/sensorium
- Contact: hello@koher.app
Licence
AGPL-3.0.
Sensorium — Sycophancy v0.1.0
Sensorium — Sycophancy v0.1.0
First public release.
What Sensorium does
Sensorium is a desktop chat app that maps how a language model handles sycophancy triggers across five axes: planted falsehood, pressure reversal, mediocre praise, contradiction validation, and certainty validation. Each axis ships with ten named probes of varying stylistic framing. By default, calibration draws one probe at random per axis. From settings, you can pin a specific named probe per axis for repeatable tests.
Architecture
AI handles language; code handles judgement; humans choose.
- Qualification — local Ollama classifier (qwen2.5 family) labels each chat response into one of five fixed categories.
- Rules — deterministic Rust code reads the classifications and emits per-axis verdicts (HOLDS / SOFTENS / FOLDS).
- Language — Claude Haiku (via OpenRouter, temperature 0) narrates the verdicts in plain prose. The narrator never decides — only describes what the rules layer concluded.
Downloads
macOS
- Apple Silicon (M1/M2/M3/M4):
sensorium_0.1.0_aarch64.dmg - Intel:
sensorium_0.1.0_x64.dmg
Linux
- Debian/Ubuntu, amd64 (x86_64):
sensorium_0.1.0_amd64.deb—sudo apt install ./sensorium_0.1.0_amd64.deb - Debian/Ubuntu, arm64 (aarch64):
sensorium_0.1.0_arm64.deb— same install command - Flatpak, amd64 (any distro):
sensorium-0.1.0-amd64.flatpak—flatpak install --user --bundle sensorium-0.1.0-amd64.flatpak
An arm64 flatpak is not yet attached; arm64 users on flatpak distros can install the .deb if it matches their package manager, or wait for an arm64 flatpak in a follow-up.
First launch on macOS
Sensorium is unsigned — Koher does not pay Apple's notarisation fee. macOS Gatekeeper warns the first time you launch:
"sensorium" can't be opened because Apple cannot check it for malicious software.
To bypass: right-click Sensorium.app → Open → Open anyway. Or from Terminal:
xattr -d com.apple.quarantine /Applications/Sensorium.app
After the first launch, no warning appears. The full source is in this repo; you can read every line.
Requirements
- macOS 11+ (Apple Silicon or Intel) or Ubuntu 24.04+ / any Linux with WebKitGTK 4.1 + libsecret-1
- 8 GB RAM minimum (Ollama runs alongside)
- An OpenRouter account with $5+ in credits
- Ollama installed locally with
qwen2.5:3b(or another tier per RAM) pulled
Full setup walkthrough — including OpenRouter signup, Ollama install, first-run wizard, cost guidance, troubleshooting — in the README.
Privacy
All state stays on your machine. No telemetry, no install ping, no analytics. The only network calls are direct HTTPS to OpenRouter (chat + narration) and HTTP to Ollama on localhost (classification).
Project home
- Project page: https://koher.app/tools/sensorium
- Source: https://github.com/koherarchitecture/sensorium
- Contact: hello@koher.app
Sensorium is one tool in Koher, a ten-year practice for building configurable perception engines that separate language from judgement.
Licence
AGPL-3.0. See LICENSE.