proton-utils

module
v0.0.0-...-7ed8070 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 28, 2026 License: MIT

README

Proton Utils

A command-line interface for Proton services.

Status: Experimental — not production ready. Core operations work but the tool is under active development and APIs may change without notice.

⚠️ api/ package: The api/ package is in extreme flux and is not suitable for external consumers. It will not stabilize until well after the cmd/ and filesystem interfaces are stable, at which point it will undergo further optimization and refactoring.

Features

  • Proton Drive — full file management: ls, find, cp, mv, mkdir, rm, share management, volume usage
  • Proton Lumo — AI assistant: interactive chat, project spaces, and a local OpenAI-compatible API server
  • ProtonFS — per-user FUSE filesystem exposing Proton Drive as a local directory tree (Linux)
  • Parallelism — bounded worker pools with shared rate-limit throttling; concurrent directory traversal and block I/O
  • Persistent Bearer sessions — SRP authentication with automatic token refresh; credentials stored in the OS keyring
  • Persistent cookie sessions — browser-based login for services that require cookie-scoped auth (Lumo); automatic cookie refresh
  • Multi-account support — independent service sessions per account; switch with --account
  • Opt-in caching — per-share dirent, metadata, and on-disk block caches; disabled by default, user-configurable
  • CAPTCHA handling — automatic browser-based human verification via chromedp
  • Encrypted-first — raw API objects are the canonical in-memory representation; decryption is lazy and on-demand; decrypted content is never persisted to disk

Installation

Requires Go 1.26+ and Chrome/Chromium (for CAPTCHA during login).

git clone https://github.com/major0/proton-utils.git
cd proton-utils
make build
Platform dependencies
Platform Packages
Ubuntu/Debian libsecret-1-dev
Fedora/RHEL libsecret-devel
macOS None (uses Keychain)

Documentation

License

See LICENSE.

Disclaimer

This project is not sponsored, endorsed, or affiliated with Proton AG. Proton, Proton Drive, and Proton Mail are trademarks of Proton AG.

Directories

Path Synopsis
api
Package api provides the core API client library for proton-utils.
Package api provides the core API client library for proton-utils.
account
Package account provides Proton Account-specific types and operations.
Package account provides Proton Account-specific types and operations.
config
Package config provides primitives for loading, saving, and validating application configuration files.
Package config provides primitives for loading, saving, and validating application configuration files.
drive
Package drive provides the Proton Drive API
Package drive provides the Proton Drive API
lumo
Package lumo provides the Lumo API client.
Package lumo provides the Lumo API client.
cmd
proton command
Package main is the entry point for the proton-utils application.
Package main is the entry point for the proton-utils application.
proton-fuse command
Command proton-fuse mounts the per-user Proton FUSE filesystem.
Command proton-fuse mounts the per-user Proton FUSE filesystem.
proton-redirector command
Command proton-redirector mounts the system-wide /proton redirector filesystem.
Command proton-redirector mounts the system-wide /proton redirector filesystem.
internal
cli
Package cli implements the command-line interface for proton-utils.
Package cli implements the command-line interface for proton-utils.
cli/account
Package accountCmd implements the account subcommands for proton-cli.
Package accountCmd implements the account subcommands for proton-cli.
cli/config
Package configCmd implements the proton config subcommand tree.
Package configCmd implements the proton config subcommand tree.
cli/drive
Package driveCmd implements the drive subcommands for proton-cli.
Package driveCmd implements the drive subcommands for proton-cli.
cli/drive/share
Package shareCmd implements the share subcommands for proton-cli.
Package shareCmd implements the share subcommands for proton-cli.
cli/lumo
Package lumoCmd implements the lumo subcommands for proton-cli.
Package lumoCmd implements the lumo subcommands for proton-cli.
cli/shortid
Package shortid provides short ID resolution and formatting utilities for CLI commands that display and resolve base64-encoded entity IDs.
Package shortid provides short ID resolution and formatting utilities for CLI commands that display and resolve base64-encoded entity IDs.
cli/testutil
Package testutil provides shared test mock types for CLI packages.
Package testutil provides shared test mock types for CLI packages.
daemon
Package daemon provides signal handling utilities for long-running processes.
Package daemon provides signal handling utilities for long-running processes.
fusemount
Package fusemount implements the per-user FUSE filesystem that dispatches operations to registered namespace handlers.
Package fusemount implements the per-user FUSE filesystem that dispatches operations to registered namespace handlers.
fusemount/drive
Package drive implements the fusemount.NamespaceHandler for Proton Drive, exposing shares as a read-only directory tree under the "drive" namespace.
Package drive implements the fusemount.NamespaceHandler for Proton Drive, exposing shares as a read-only directory tree under the "drive" namespace.
keyring
Package keyring provides session index management and system keyring abstraction for Proton utilities.
Package keyring provides session index management and system keyring abstraction for Proton utilities.
redirector
Package redirector implements the system-wide FUSE filesystem mounted at /proton.
Package redirector implements the system-wide FUSE filesystem mounted at /proton.
sdnotify
Package sdnotify implements a minimal sd_notify(3) client for signaling service readiness to systemd.
Package sdnotify implements a minimal sd_notify(3) client for signaling service readiness to systemd.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL