The live attention layer for Paperclip. Re-stacks approvals, issues, and agent signals into now, next, and ambient.
See the codeThe live attention layer for Paperclip, combining Aperture Core continuity with Paperclip-native operator policy.
Paperclip Aperture adds a Focus surface to Paperclip that turns approvals, issue activity, and other human-facing signals into now, next, and ambient.
It is designed as a live attention layer, not an inbox clone:
now shows the single most interrupting itemnext stages the queue behind itambient keeps low-pressure awareness visible without demanding actionPut differently:
npx paperclipai plugin install @tomismeta/paperclip-aperture
If you need Paperclip first:
npx paperclipai onboard --yes
npx paperclipai run
Then install the plugin with the command above.
After install, open Paperclip and use the Focus entry in the sidebar.
Focus entry, upgrade to Paperclip 2026.525.0 or newer and reinstall this plugin. 0.4.5+ preserves the original Focus sidebar icon and uses the current host invocation scope.paperclipApiBase is only needed for approval overlays. Use the Paperclip origin such as https://HOST or http://127.0.0.1:3100; leaving it empty disables approval overlay reads without disabling Focus.spawn npm ENOENT during npx paperclipai plugin install @tomismeta/paperclip-aperture comes from the Paperclip host installer failing to spawn npm. This package does not spawn npm during install. Make sure the Paperclip process can resolve npm.cmd, or upgrade Paperclip once the Windows installer fix is available.+--------------+ +--------------+ +--------------+ +--------------+ +--------------+
| Arrive | | Translate | | Judge | | Show | | Respond |
| events | | facts | | attention | | surface | | action |
+--------------+ +--------------+ +--------------+ +--------------+ +--------------+
| | | | |
+-----> +-----> +-----> +-----> |
tool hooks explicit facts does this what the operator decision
from Paperclip from raw payloads deserve operator carried back
and agents attention now? actually sees to the tool
now, next, and ambient attention lanesWhy now, Why next, confidence, signals, thread context, and related activitynow item, so Show context and inline commenting do not immediately lose the thread beneath themreview required, blocked, and targeted recommended movessupersedes and resolves relationships where Paperclip-specific intent is clearreview is blocked on the artifact and the artifact is attached, monitor insteadnow, next, and ambient as new evidence arrivescore -> reconciled -> display so the plugin's host-policy contribution is inspectable without confusing it for Core judgmentissue-intelligence regression check in CI so heuristic edits stay inspectableFocus is meant to be more legible than a smart inbox.
The current 0.4.x explainability slice keeps reasoning attached to the cards you are already acting on:
Why now on the active card explains why the current item outranks the rest of the queueWhy next on queued rows explains why something is staged behind the current top itemConfidence shows how strong the semantic signal is when the plugin has oneSignals surfaces the specific factors that pushed the item into attentionThread context and Related activity help explain whether an item is part of a broader episode or continuationThe intent is not to expose every internal scoring detail. It is to help an operator answer:
This plugin treats Paperclip as the host runtime and UI shell, while embedding Aperture Core through the npm package @tomismeta/aperture-core.
It is an SDK-first integration with explicit plugin-side host policy. Aperture Core handles continuity, replay, and global attention mechanics; the plugin adds Paperclip-specific candidate generation, approval overlays, and operator language where the host can know more than Core alone.
For 0.5.x, the boundary works like this:
SourceEvents where the Core contract supports them, while still exporting the normalized ApertureEvent used for replay/debugactivity.logged document events invalidate stale reconciled state so document-backed review blockers refresh promptly without a full browser-side merge layeragent.error_cleared events invalidate reconciled agent state, and redacted deleted comments are ignored when Focus chooses the latest operator signalactivity.logged retained as a compatibility fallbackSourceEvidence; arbitrary prose and malformed evidence are ignored0.9.x semantic and judgment hardening is consumed through this existing ApertureCore integration; the plugin does not run the Core ./kernel subpath as a second runtime judgment systemThe plugin requires Paperclip 2026.525.0 or newer and has been validated against the published @tomismeta/aperture-core@0.9.0 artifact and @paperclipai/plugin-sdk@2026.722.0. The plugin resolves configuration per Paperclip company so settings do not bleed across company contexts.
Paperclip 2026.722.0 has an upstream installer issue where the running server may report host version 0.0.0 during plugin minimum-version validation. If installation fails with that message, upgrade to a Paperclip server release containing the host-version fix; do not lower the plugin's declared minimum host version.
Approval overlay transport is opt-in until the Paperclip plugin SDK exposes a first-class approval client. Set the plugin config field paperclipApiBase when the worker can reach the host approval API; leave it empty to run Focus without approval overlays in hosted or restricted-network environments.
pnpm install
pnpm verify
Before releasing, run:
pnpm clean
pnpm release:check
pnpm verify runs typecheck, tests, the issue-intelligence eval corpus, a production build, and bundle-size checks.
For a live local Paperclip smoke test, start Paperclip first:
pnpm build
npx paperclipai run -i default
Then, in a second terminal:
npx paperclipai context set --api-base http://localhost:3100
npx paperclipai plugin uninstall tomismeta.paperclip-aperture --force
npx paperclipai plugin install --local .
If you want to smoke test approval overlays locally, set the plugin config field paperclipApiBase to http://127.0.0.1:3100 before creating approval fixtures. Without that config, Focus intentionally skips approval API reads and stays quiet.
Then open http://127.0.0.1:3100/APE/aperture and verify:
Acknowledge hides the active card and survives refreshNext promotes into NowpaperclipApiBase is configuredNow itemsshare the memo/spec review blockers into monitor-only follow-upWhy nowWhy next@tomismeta/paperclip-aperture@tomismeta/aperture-coreTypeScript
100.0%
The live attention layer for Paperclip. Re-stacks approvals, issues, and agent signals into now, next, and ambient.
See the codeThe live attention layer for Paperclip, combining Aperture Core continuity with Paperclip-native operator policy.
Paperclip Aperture adds a Focus surface to Paperclip that turns approvals, issue activity, and other human-facing signals into now, next, and ambient.
It is designed as a live attention layer, not an inbox clone:
now shows the single most interrupting itemnext stages the queue behind itambient keeps low-pressure awareness visible without demanding actionPut differently:
npx paperclipai plugin install @tomismeta/paperclip-aperture
If you need Paperclip first:
npx paperclipai onboard --yes
npx paperclipai run
Then install the plugin with the command above.
After install, open Paperclip and use the Focus entry in the sidebar.
Focus entry, upgrade to Paperclip 2026.525.0 or newer and reinstall this plugin. 0.4.5+ preserves the original Focus sidebar icon and uses the current host invocation scope.paperclipApiBase is only needed for approval overlays. Use the Paperclip origin such as https://HOST or http://127.0.0.1:3100; leaving it empty disables approval overlay reads without disabling Focus.spawn npm ENOENT during npx paperclipai plugin install @tomismeta/paperclip-aperture comes from the Paperclip host installer failing to spawn npm. This package does not spawn npm during install. Make sure the Paperclip process can resolve npm.cmd, or upgrade Paperclip once the Windows installer fix is available.+--------------+ +--------------+ +--------------+ +--------------+ +--------------+
| Arrive | | Translate | | Judge | | Show | | Respond |
| events | | facts | | attention | | surface | | action |
+--------------+ +--------------+ +--------------+ +--------------+ +--------------+
| | | | |
+-----> +-----> +-----> +-----> |
tool hooks explicit facts does this what the operator decision
from Paperclip from raw payloads deserve operator carried back
and agents attention now? actually sees to the tool
now, next, and ambient attention lanesWhy now, Why next, confidence, signals, thread context, and related activitynow item, so Show context and inline commenting do not immediately lose the thread beneath themreview required, blocked, and targeted recommended movessupersedes and resolves relationships where Paperclip-specific intent is clearreview is blocked on the artifact and the artifact is attached, monitor insteadnow, next, and ambient as new evidence arrivescore -> reconciled -> display so the plugin's host-policy contribution is inspectable without confusing it for Core judgmentissue-intelligence regression check in CI so heuristic edits stay inspectableFocus is meant to be more legible than a smart inbox.
The current 0.4.x explainability slice keeps reasoning attached to the cards you are already acting on:
Why now on the active card explains why the current item outranks the rest of the queueWhy next on queued rows explains why something is staged behind the current top itemConfidence shows how strong the semantic signal is when the plugin has oneSignals surfaces the specific factors that pushed the item into attentionThread context and Related activity help explain whether an item is part of a broader episode or continuationThe intent is not to expose every internal scoring detail. It is to help an operator answer:
This plugin treats Paperclip as the host runtime and UI shell, while embedding Aperture Core through the npm package @tomismeta/aperture-core.
It is an SDK-first integration with explicit plugin-side host policy. Aperture Core handles continuity, replay, and global attention mechanics; the plugin adds Paperclip-specific candidate generation, approval overlays, and operator language where the host can know more than Core alone.
For 0.5.x, the boundary works like this:
SourceEvents where the Core contract supports them, while still exporting the normalized ApertureEvent used for replay/debugactivity.logged document events invalidate stale reconciled state so document-backed review blockers refresh promptly without a full browser-side merge layeragent.error_cleared events invalidate reconciled agent state, and redacted deleted comments are ignored when Focus chooses the latest operator signalactivity.logged retained as a compatibility fallbackSourceEvidence; arbitrary prose and malformed evidence are ignored0.9.x semantic and judgment hardening is consumed through this existing ApertureCore integration; the plugin does not run the Core ./kernel subpath as a second runtime judgment systemThe plugin requires Paperclip 2026.525.0 or newer and has been validated against the published @tomismeta/aperture-core@0.9.0 artifact and @paperclipai/plugin-sdk@2026.722.0. The plugin resolves configuration per Paperclip company so settings do not bleed across company contexts.
Paperclip 2026.722.0 has an upstream installer issue where the running server may report host version 0.0.0 during plugin minimum-version validation. If installation fails with that message, upgrade to a Paperclip server release containing the host-version fix; do not lower the plugin's declared minimum host version.
Approval overlay transport is opt-in until the Paperclip plugin SDK exposes a first-class approval client. Set the plugin config field paperclipApiBase when the worker can reach the host approval API; leave it empty to run Focus without approval overlays in hosted or restricted-network environments.
pnpm install
pnpm verify
Before releasing, run:
pnpm clean
pnpm release:check
pnpm verify runs typecheck, tests, the issue-intelligence eval corpus, a production build, and bundle-size checks.
For a live local Paperclip smoke test, start Paperclip first:
pnpm build
npx paperclipai run -i default
Then, in a second terminal:
npx paperclipai context set --api-base http://localhost:3100
npx paperclipai plugin uninstall tomismeta.paperclip-aperture --force
npx paperclipai plugin install --local .
If you want to smoke test approval overlays locally, set the plugin config field paperclipApiBase to http://127.0.0.1:3100 before creating approval fixtures. Without that config, Focus intentionally skips approval API reads and stays quiet.
Then open http://127.0.0.1:3100/APE/aperture and verify:
Acknowledge hides the active card and survives refreshNext promotes into NowpaperclipApiBase is configuredNow itemsshare the memo/spec review blockers into monitor-only follow-upWhy nowWhy next@tomismeta/paperclip-aperture@tomismeta/aperture-coreTypeScript
100.0%