Skip to content

Andarius/scw-secrets-desktop

Repository files navigation

Scaleway Secrets Desktop

Desktop app for browsing and managing Scaleway Secret Manager secrets.

Built with Electrobun, React, TypeScript, and Tailwind CSS.

Disclaimer

This project is provided as-is, with no guarantee or warranty of any kind. Use it at your own risk.

SCW Secrets Desktop

Features

  • Profile & project switching — reads ~/.config/scw/config.yaml and environment variables
  • Path navigator — browse secrets organized by path hierarchy
  • Secrets inventory — searchable table with status and version badges, filter by status
  • Multi-select — shift+click for range, ctrl+click to toggle, batch operations
  • View secret values — single or batch, displayed in a full-screen overlay with copy support
  • Create secret — create new secrets with name, path, type, value, and tags
  • Edit secret values — modify a value and save as a new version
  • Copy as KEY=VALUE — batch-copy selected secrets for .env files
  • Version history — modal with all versions, enable/disable/destroy actions
  • Keep Latest — prune old versions, keeping only the latest revision (single or batch)
  • Column sorting — sort inventory by name, version count, or updated date
  • Secret types — displayed in inventory table and detail panel
  • Cost estimates — storage cost and potential cleanup savings in stats cards
  • Tags — displayed in the inventory table
  • Select all — quick button to select all visible secrets
  • Manage secret — opens the Scaleway console for the selected secret
  • Schedule deletion — single or batch delete with confirmation

Setup

bun install

macOS

When installing from a .dmg, copy the app to /Applications before launching — running directly from the disk image will fail due to an Electrobun self-extraction limitation.

If macOS shows "app is damaged and can't be opened", clear the quarantine attribute:

xattr -c "/Applications/Scw Secrets.app"

Development

bun run dev          # Electrobun dev mode
bun run dev:hmr      # Electrobun + Vite HMR
bun run mock         # Browser preview with mock data (port 5199)

Testing

bun run test         # Unit tests (bun test)
bun run test:e2e     # E2E tests (Playwright against mock mode)

Build

bun run build        # Vite production build
bun run build:canary # Vite build + Electrobun canary
bun run build:stable # Vite build + Electrobun stable
bun run typecheck    # TypeScript check

Linux Release

Download the Linux release from the GitHub releases page:

  • stable-linux-x64-ScwSecrets-Setup.tar.gz
  • stable-linux-x64-ScwSecrets.tar.zst

Using the installer bundle (.tar.gz):

curl -LO https://github.com/Andarius/scw-secrets-desktop/releases/download/v0.1.0/stable-linux-x64-ScwSecrets-Setup.tar.gz
tar -xzf stable-linux-x64-ScwSecrets-Setup.tar.gz
./installer

The installer extracts the app to ~/.local/share/dev.julien.scw-secrets/stable/app and creates a desktop shortcut.

Using the direct app bundle (.tar.zst):

curl -LO https://github.com/Andarius/scw-secrets-desktop/releases/download/v0.1.0/stable-linux-x64-ScwSecrets.tar.zst
tar --zstd -xf stable-linux-x64-ScwSecrets.tar.zst
cd ScwSecrets
./bin/launcher

The app needs a graphical session. If you launch it from a plain shell without a usable display, GTK will fail with cannot open display.

If the extracted directory name changes in a future release, locate the launcher with:

find . -type f -name launcher

Project Structure

src/
├── bun/
│   ├── index.ts              # Electrobun main process and RPC handlers
│   └── scw.ts                # Scaleway config parsing and API client
├── mainview/
│   ├── App.tsx               # React application shell
│   ├── rpc.ts                # Typed Electrobun webview RPC setup
│   ├── main.tsx              # React entry point
│   ├── secret-list.ts        # Filtering, sorting, and selection reconciliation
│   ├── secret-versions.ts    # Version pruning plan logic
│   ├── inventory-selection.ts # Row click and select-all state helpers
│   └── components/
│       ├── Header.tsx        # Profile/project dropdowns, metadata bar
│       ├── StatsCards.tsx     # Gradient stat cards
│       ├── Navigator.tsx     # Path tree with count badges
│       ├── Inventory.tsx     # Secrets table with multi-select
│       ├── DetailPanel.tsx   # Secret detail and action buttons
│       ├── ValueModal.tsx    # Full-screen value overlay
│       ├── EditModal.tsx     # Edit secret value modal
│       ├── CreateSecretModal.tsx # Create new secret modal
│       └── HistoryModal.tsx  # Version history modal with actions
└── shared/
    ├── models.ts             # Shared types
    └── rpc.ts                # RPC contract

About

Desktop application to manage Scaleway secrets

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages