Skip to main content

qute-1pass-sidecar

Sidecar daemon for qutebrowser's experimental 1Password integration. Listens on a Unix socket, speaks JSON-RPC 2.0, and delegates to a pluggable backend — either the official op CLI (default, ToS-clean) or an experimental native-protocol backend that speaks the 1Password desktop app IPC directly.

Companion browser-side code lives in the validate-8642-webauthn branch of gianlucamazza/qutebrowser. See doc/onepassword.asciidoc for the browser-side setup and command reference.

The copy in misc/onepassword-sidecar/ of that branch mirrors this repository and is kept in sync; either is installable via pip/pipx.

Requirements

  • Python 3.10+
  • 1Password CLI v2 (op) installed and signed in with biometric unlock enabled
  • Linux (macOS support untested; Windows not supported)

Install

# From source (recommended for development)
pip install -e .

# Or with pipx for an isolated environment
pipx install .

This installs the qute-1pass-sidecar executable.

Native backend launcher (optional, required for --backend native)

The native backend communicates with 1Password by spawning /opt/1Password/1Password-BrowserSupport — the same helper process used by the official browser extension. BrowserSupport verifies its caller's binary via /proc/<ppid>/exe and requires it to be root-owned and listed in /etc/1password/custom_allowed_browsers.

The bundled launcher/ directory contains a small C bridge program that forks BrowserSupport as a child and proxies stdin/stdout via poll(). Build and install it with:

# Compile
make -C launcher

# Install root-owned to /usr/local/bin (required for native backend)
make -C launcher install-system
# Then register as a trusted browser (one-time, requires root):
echo qute-1pass-sidecar | sudo tee -a /etc/1password/custom_allowed_browsers

make install (without -system) installs to ~/.local/bin for development/testing, but that path does not satisfy 1Password's root-owned binary requirement, so the native backend will still degrade to op-cli with a clear error message.

If the launcher is not installed at all, starting the sidecar with --backend native automatically falls back to op-cli and reports the reason via ping() (visible via :onepassword status in qutebrowser).

Run

qute-1pass-sidecar [--backend op-cli|native] [--socket-path PATH]

Options:

Flag Default Description
--backend op-cli Backend to use. native is experimental and requires onepassword.experimental_bridge = true in qutebrowser.
--socket-path $XDG_RUNTIME_DIR/qute-1pass.sock Unix socket path. Must match onepassword.socket_path in qutebrowser config if set.

The easiest way to start the sidecar from qutebrowser itself is:

:onepassword restart-sidecar

This reads onepassword.backend and onepassword.socket_path from the browser's config and spawns the sidecar with the matching arguments.

systemd user unit

Create ~/.config/systemd/user/qute-1pass-sidecar.service:

[Unit]
Description=qutebrowser 1Password sidecar
After=graphical-session.target

[Service]
ExecStart=%h/.local/bin/qute-1pass-sidecar --backend op-cli
Restart=on-failure
RestartSec=5

[Install]
WantedBy=graphical-session.target

Enable and start:

systemctl --user enable --now qute-1pass-sidecar.service

Troubleshooting

Socket file collision — if qute-1pass.sock already exists from a previous crashed run and the sidecar refuses to bind, remove the stale file:

rm "$XDG_RUNTIME_DIR/qute-1pass.sock"

op CLI not signed in — the op-cli backend will fail with "locked" if you haven't authenticated. Run:

op signin

and confirm biometric unlock is configured (op account list should show your account).

Checking sidecar status from qutebrowser — use:

:onepassword status

This sends a ping RPC and displays the backend name, capability set, and lock status.

Logs — start the sidecar with --log-level debug (if supported by your install) or run it in a terminal to see JSON-RPC traffic on stderr.

Release files for qute-1pass-sidecar 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for qute-1pass-sidecar 0.1.0
File Size Uploaded
qute_1pass_sidecar-0.1.0.tar.gz 27.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for qute-1pass-sidecar 0.1.0
File Interpreter ABI Platform
qute_1pass_sidecar-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 54.4 kB

Release files / qute_1pass_sidecar-0.1.0.tar.gz

Download URL qute_1pass_sidecar-0.1.0.tar.gz
Size 27.9 kB
Tags Source
SHA-256 checksum
How to use checksums
a331a2e89c6ad5147015101cf4e0f59211572e26380273dfaf5a8cea28008de1
BLAKE2b-256 checksum
How to use checksums
0fab4dd258dc56d82a6415deda05b18037aa6300f0be68eb12060ba4fb076bbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 18, 2026.

Transparency log

Release files / qute_1pass_sidecar-0.1.0-py3-none-any.whl

Download URL qute_1pass_sidecar-0.1.0-py3-none-any.whl
Size 26.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
06108e89552e976d369a8b9d91e2f47742ec53eee7d2ffdd81c59e16300f6beb
BLAKE2b-256 checksum
How to use checksums
a95ac2eb5171a3216285b72c3162e7a205f5377173e6c206a0f75f1e1a14e431
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 18, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page