Skip to content

Repository files navigation

Open Notebook Studio for Omarchy

Your private research workspace, distilled into an elegant Omarchy panel.

Release Validation License: MIT Omarchy Quattro

Open Notebook Studio is a local-first command center for Open Notebook. Capture material, browse notebooks, write notes, search the whole knowledge base, run saved transformations, generate and play podcasts, tune everyday settings, watch background work, and hold source-grounded conversations without leaving the Omarchy bar.

The panel complements the full Open Notebook application rather than replacing its server or database. Credential entry, podcast-profile editing, embedding rebuilds, deletion, and administrative screens remain one click away in the full app.

Feature tour

See the whole workspace at a glance

Home brings notebook, source, and note totals together with recent material, active background work, and the configured chat model—enough signal to decide what needs attention without opening a browser.

Open Notebook Studio Home panel showing knowledge-base totals, recent sources, an active job, and the configured chat model

Capture before context gets lost

Add a link, paste text, or choose a file, select its notebook, and optionally make it searchable. Open Notebook keeps extracting and indexing after the panel closes.

Open Notebook Studio Capture panel with a fictitious research link, notebook selection, Link, Text, and File modes, and a searchability control

Have a conversation grounded in your sources

Resume a thread or start a new one inside a selected notebook. Smart context prefers compact source insights and falls back to full source text when needed; Insights and Full modes stay one click away.

Open Notebook Studio Chat panel showing a fictitious source-grounded conversation and Smart, Insights, and Full context controls

Build a podcast without babysitting it

Choose a notebook and ready podcast profile, give the episode a title and direction, then queue it from Smart, Insights, or Full context. Generation continues on the Open Notebook server when the panel—or the shell—closes.

Open Notebook Studio Podcast Studio showing the episode generator, a completed fictitious episode, and another episode generating in the background

Keep listening inside Omarchy

Finished episodes play in place with a timeline, 15-second seek, pause, replay, speed, mute, and volume controls. Playback persists while you move around the panel, and another episode can keep generating at the same time.

Open Notebook Studio Podcast Studio playing a fictitious episode with timeline, seek, pause, speed, mute, and volume controls

Keep powerful defaults understandable

See configured providers, choose available defaults by modality, and run model tests only when you explicitly request them. Credential entry, embedding-model changes, and sensitive administration stay in the full Open Notebook app.

Open Notebook Studio Settings panel showing fictitious configured providers, model defaults, and explicit test controls

Notebook names, sources, conversations, episodes, providers, and models shown above are fictitious demo content. The screenshots contain no credentials, provider keys, private paths, or personal notebook material.

Highlights

  • Five focused areas: Home, Library, Capture, Chat, and Tools
  • Smart context chat that prefers compact insights and falls back to full text
  • Link, text, and document capture with optional vector embedding
  • Notebook creation and fast note capture
  • Full-text and semantic search across sources and notes
  • Saved transformations for summaries, extraction, and structured analysis
  • Background podcast generation from Smart, Insights, or Full notebook context
  • Persistent playback with scrubbing, seek, speed, volume, mute, and replay
  • Desktop completion notifications plus a durable in-panel result
  • Safe model and capture settings gated by live provider availability
  • Live background-job visibility and failed-source retry
  • Theme-aware Omarchy UI, keyboard-friendly behavior, and focused-monitor routing
  • One keep-loaded API service shared across every monitor
  • Owner-aware cancellation for long chat and transformation requests
  • Private, bounded podcast caching only when protected playback requires it
  • No provider keys, tokens, notebook contents, or machine paths in the repository

Why it uses Open Notebook's model provider

Codex CLI login authenticates the Codex coding-agent runtime. It is not a general OpenAI-compatible inference endpoint for third-party notebook servers, and invoking the agent for arbitrary notebook prompts would grant unnecessary filesystem and tool authority. Open Notebook Studio therefore uses Open Notebook's supported provider layer and encrypted credential store. Whatever default model Open Notebook reports as configured continues to work unchanged; provider availability is checked before the panel allows a settings change.

Requirements

  • Omarchy with the Quickshell plugin system
  • A running Open Notebook service using the 1.14.x API (live-tested with 1.14.0)
  • Python 3.10 or newer
  • Qt 6 Multimedia with its FFmpeg backend (qt6-multimedia and ffmpeg on Arch)
  • zenity for graphical file selection
  • libnotify for background completion notifications (optional)
  • omarchy-launch-webapp or xdg-open for opening the full app

The default endpoints are http://127.0.0.1:5055 for the API and http://127.0.0.1:8502 for the UI.

Install

Review the repository, then let Omarchy clone, validate, and enable it:

omarchy plugin add https://github.com/dlpwaters/omarchy-open-notebook.git --enable

The widget defaults to the left section. Move it whenever you like:

omarchy bar move io.github.dlpwaters.open-notebook --section left

No sudo or pkexec is required. The plugin does not run install hooks, install packages, start containers, or modify Omarchy-managed files. Omarchy installs the Git checkout under ~/.config/omarchy/plugins/io.github.dlpwaters.open-notebook.

Connect and sign in

Open Notebook Studio connects to the standard local endpoints automatically:

  • API: http://127.0.0.1:5055
  • App: http://127.0.0.1:8502

If your loopback-only Open Notebook deployment has password authentication disabled, there is no second sign-in step. Open the panel and press Refresh.

If OPEN_NOTEBOOK_PASSWORD is enabled in Open Notebook, store the same password in the plugin's private file. This Bash prompt does not echo the password, add it to shell history, or pass it as a command argument:

install -d -m 700 "${XDG_CONFIG_HOME:-$HOME/.config}/omarchy-open-notebook"
read -rsp 'Open Notebook password: ' OPEN_NOTEBOOK_STUDIO_PASSWORD
printf '\n'
printf '%s' "$OPEN_NOTEBOOK_STUDIO_PASSWORD" \
  | install -m 600 /dev/stdin \
      "${XDG_CONFIG_HOME:-$HOME/.config}/omarchy-open-notebook/password"
unset OPEN_NOTEBOOK_STUDIO_PASSWORD
omarchy restart shell

Confirm the connection without exposing the password:

"${XDG_CONFIG_HOME:-$HOME/.config}/omarchy/plugins/io.github.dlpwaters.open-notebook/opennotebook-tool" check

The result reports "authEnabled":true when authenticated, and the panel footer shows AUTHENTICATED. A missing or wrong password produces an actionable, body-free message; the server response body is never forwarded to QML. The helper reads the password directly from the protected file and adds the standard Authorization: Bearer header. QML never receives the password.

Open app launches Open Notebook's own web interface. Its browser-session login is separate: enter the same Open Notebook password there when prompted. The plugin deliberately does not copy or inject the password into the browser.

Codex CLI and ChatGPT login sessions are deliberately not reused. They authenticate coding-agent products, not Open Notebook's provider API. Configure model providers and their credentials in the full Open Notebook application.

Secure Open Notebook setup

For a local workstation deployment, bind every published port to loopback:

ports:
  - "127.0.0.1:8502:8502"
  - "127.0.0.1:5055:5055"

Bind SurrealDB to 127.0.0.1 as well, or do not publish its port at all. Keep Open Notebook's .env untracked and mode 600, and configure provider keys in Open Notebook's encrypted credential store—not in this plugin.

The private-file sign-in above is preferred. The password file must be exactly mode 600, regular, owned by the current user, and no larger than 64 KB; symlinks and other file types are refused. As an advanced session-only alternative, export OPEN_NOTEBOOK_PASSWORD before restarting Omarchy shell. Never put a password in config.json, .env.example, Git, or a command argument.

Optional endpoint overrides can be provided through environment variables or ~/.config/omarchy-open-notebook/config.json:

{
  "api_url": "http://127.0.0.1:5055",
  "ui_url": "http://127.0.0.1:8502"
}

The checked-in .env.example is a shell export template, not a file the plugin loads automatically. Environment overrides must be exported into the process environment before Omarchy shell starts or restarts, for example:

export OPEN_NOTEBOOK_API_URL=http://127.0.0.1:5055
export OPEN_NOTEBOOK_UI_URL=http://127.0.0.1:8502
omarchy restart shell

For persistent endpoint overrides, prefer config.json. The compatibility target is Open Notebook 1.14.x; compatibility with later API lines is not implied without retesting.

Remote endpoints are refused unless they use HTTPS, you deliberately set OMARCHY_OPEN_NOTEBOOK_ALLOW_REMOTE=1, and an Open Notebook password is configured through one of the protected mechanisms above.

Use

  • Home shows knowledge-base totals, active work, recent sources, and the configured chat model.
  • Library filters sources and notes inside the selected notebook, retries a failed source, creates notes, and creates notebooks.
  • Capture adds a URL, pasted text, or a document and queues background extraction/embedding. The panel can close while Open Notebook keeps working.
  • Chat opens existing conversations or starts a new one. Smart context uses source insights where available and full source text otherwise. Sending stays disabled until Open Notebook reports a configured default chat model.
  • Tools → Podcasts creates an episode from a ready notebook and monitors the exact server job in the background. Open Notebook keeps generating after the panel or shell closes. While the shell is running, the service sends a generic desktop notification and retains the result for the next panel open; after a shell restart, the finished episode appears on refresh. Sources that are still processing must finish first so an episode is never generated from partial context.
  • Tools → Podcasts also provides persistent playback, timeline scrubbing, ±15-second seek, pause/resume/replay, 1×–2× speed, volume, and mute. Playback continues when the panel closes.
  • Tools → Settings changes supported default models and capture processors. A model is selectable only when Open Notebook reports that its provider and modality are available; billable model tests are always explicit.
  • Tools → Search / Transform / Jobs searches the knowledge base, applies saved transformations, and monitors background commands.

Potentially destructive operations and settings that can expose credentials remain in the full application.

Update or remove

omarchy plugin update io.github.dlpwaters.open-notebook
omarchy plugin remove io.github.dlpwaters.open-notebook

Removal disables and removes the Git checkout. It does not touch the separate Open Notebook deployment or any notebooks, sources, notes, provider credentials, or generated episodes. It also leaves the protected connection file and podcast cache in place so an accidental removal does not destroy user data. Clear audio from Tools → Settings first if you do not want to retain cached playback; the remaining plugin-owned paths are documented in SECURITY.md.

Troubleshooting

  • Panel says offline: start Open Notebook, then run opennotebook-tool check from the installed plugin directory.
  • Authentication required or password rejected: repeat the private password prompt under Connect and sign in, restart Omarchy shell, and refresh.
  • Chat is unavailable: open Tools → Settings and make sure Open Notebook reports an available default chat model and provider.
  • A podcast remains queued: Open Notebook's background worker must be running, and every selected source must finish processing first.
  • Playback is silent or unavailable: install Qt 6 Multimedia and FFmpeg, then restart Omarchy shell.

Raw upstream response bodies are intentionally hidden because they can contain provider details, request fragments, or paths. Use Open Notebook's own logs for deeper server-side diagnosis.

IPC and automation

omarchy-shell shell summon io.github.dlpwaters.open-notebook
omarchy-shell shell toggle io.github.dlpwaters.open-notebook
omarchy-shell shell hide io.github.dlpwaters.open-notebook

These shell-level commands route to the focused monitor. Capture content and chat prompts are deliberately entered in the panel, never as command arguments where they could be exposed through shell history or the process list.

With the panel focused, 15 switch the main tabs. In Tools, s, t, j, p, and g open Search, Transform, Jobs, Podcasts, and Settings. Editors and dropdowns take exclusive keyboard focus while in use.

Development and validation

omarchy plugin validate .
qmllint -I /usr/share/omarchy/shell BarWidget.qml Panel.qml Service.qml
python3 -m unittest discover -v
./opennotebook-tool check

Privacy

The helper prints transient, allowlisted JSON to its parent QML process. Search results, pasted text, chat prompts, notebook titles, context, and local source paths exist transiently in helper or shell memory while needed, but the plugin does not write them to its own files or logs. For its own durable state, the plugin stores only the selected notebook ID in Omarchy shell settings. Open Notebook persists the content you add, and Open Notebook plus the configured model provider process the data needed for an operation; their privacy and retention terms apply.

On loopback with Open Notebook authentication disabled, podcast audio streams directly from the local API. Authenticated or deliberately remote playback uses ${XDG_CACHE_HOME:-$HOME/.cache}/omarchy-open-notebook/audio: when XDG_CACHE_HOME is unset, this resolves to ~/.cache. Both cache directories are mode 700, files are mode 600, each file is limited to 512 MB, and least-recently-used audio is trimmed to about 1 GB total. Cache keys include the API origin, and the cache can be cleared from Tools → Settings. Credentials are never cached.

Graphical browser and file-picker children receive a desktop-session allowlist, not the helper's full environment, so unrelated provider and cloud credentials are not inherited.

See SECURITY.md for the full trust boundary.

License and attribution

Open Notebook Studio is MIT licensed. It is original plugin code that integrates with Open Notebook's documented/local REST API. Open Notebook is an independent MIT-licensed project by Luis Novo and contributors. This community plugin is not affiliated with or endorsed by Open Notebook, Omarchy, or OpenAI.

About

A secure Omarchy panel for capturing, searching, chatting, generating podcasts, and playing your Open Notebook knowledge base.

Topics

Resources

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages