SoftGlaze Browser is a local-first Electron + React desktop app for managing isolated browser profiles, reusable proxies, and spreadsheet-based profile imports. Each profile runs in its own data directory with its own proxy and its own browser fingerprint, so several accounts can be worked in parallel without sharing cookies, storage, or device characteristics.
All data stays on the machine. There is no hosted backend and no profile syncing to a remote server.
- Electron main process
- React renderer via Vite
- Tailwind CSS v4 with Shadcn-style local UI primitives
- SQLite through Prisma ORM
puppeteer-extrawith the stealth plugin for launching profile windowsrebrowser-puppeteer-coreinenableDisableruntime-fix mode- SheetJS
xlsxfor Excel/CSV parsing
Profiles and isolation
- Local browser profile management with per-profile data directories
- Per-profile fingerprint values for GPU, RAM, WebRTC and screen, applied as the single source of truth (the overlapping stealth-plugin evasions are disabled so the two layers cannot disagree)
- Coherence guard: the reported Chrome major version is kept consistent with the browser actually launched
- Optional use of a real installed Chrome binary instead of bundled Chromium
- Profile grouping, tagging, bulk operations, trash/restore
Networking
- Reusable proxy pool with health checking and background re-checks
- HTTP/3 (QUIC) disabled by default when a profile is proxied, so UDP cannot bypass the proxy
- Optional local-network-access blocking
Import and workflow
- Spreadsheet (
.xlsx/.xls/.csv) batch import with preview-before-commit - Profile import from other platforms via their APIs
- Managed browser extensions, with uBlock Origin (MV3) available per profile
- Team members with role-based access control
- Localized interface (English and Spanish)
Profile isolation of this kind is used for legitimate multi-account work such as agency and client account management, ad-account separation, QA across device profiles, and privacy-motivated browsing separation.
You are responsible for complying with the terms of service of any site you use it with. Do not use it to evade a ban, misrepresent identity, commit fraud, or break the rules of a platform you have agreed to.
- Node.js 20.19.0 or newer
- npm 10 or newer
- Windows, macOS, or Linux
cd softglaze-browser
npm installnpm install runs prisma generate automatically through the postinstall script.
npm run devThe app will:
- Start the Vite renderer at
127.0.0.1:5173. - Start Electron.
- Create the SQLite database in Electron's user data directory.
- Create the local profile root folder in Electron's user data directory.
- Bootstrap missing tables/indexes automatically.
The runtime app can bootstrap the required SQLite schema automatically. For standard Prisma migration workflow, run:
cp .env.example .env
npm run prisma:migratenpm run buildBuild output is written to:
dist_installer/The app stores runtime data under Electron's userData path:
- SQLite DB:
softglaze.sqlite - Browser profile folders:
softglaze_profiles/
You can view exact resolved paths in the app under:
Settings → Local RuntimeSingle proxy fields:
host
port
username optional
password optionalBatch proxy input supports one proxy per line:
host:port:username:password
host:port
http://username:password@host:port
socks5://username:password@host:portThe batch importer supports .xlsx, .xls, and .csv files.
Expected behavior:
- Scans for the header row starting around row 4.
- Detects profile title/name columns.
- Maps proxy methods:
Customor2→ profile proxySystemor1→ system proxyDirect,None, or0→ direct connection
- Supports combined proxy cells such as:
Proxy Host:Proxy Port:Proxy Account:Proxy PasswordImport flow:
- Open
Batch Import. - Click
Open File Picker. - Review parsed rows in the preview table.
- Click
Commit Importonly after the preview is correct.
When launching a profile, the engine opens Chromium (or a real installed Chrome, if configured) with:
- A dedicated
userDataDirper profile. - An optional proxy server argument, with authentication through
page.authenticate. - A window size defaulting to
1280x720and configurable per profile. - A per-profile user agent built by
buildUserAgentBundle(), kept consistent with the Chrome major version actually launched, together with matchinguserAgentMetadataso theSec-CH-UA-*Client Hints headers agree with it. - Per-profile GPU, RAM, WebRTC and screen values applied over CDP.
The stealth plugin's user-agent-override, navigator.hardwareConcurrency,
navigator.languages and webgl.vendor evasions are deliberately disabled so
they cannot contradict the per-profile values, which are the single source of
truth.
- Renderer has no direct Node.js access.
contextIsolationis enabled.nodeIntegrationis disabled.- The preload exposes only narrow
window.softglazeAPIs. - External navigation is blocked from replacing the app UI and is opened through the OS browser instead.
- Renderer permissions are denied by default.
Installing Puppeteer downloads a compatible Chrome for Testing browser binary by default. This can be a large download. To use a system Chrome/Chromium instead, configure Puppeteer environment variables and pass an executable path in the backend before packaging.
SoftGlaze Browser is source-available under the Business Source License 1.1.
- Non-production use is free. Evaluation, development, testing and personal experimentation are permitted, including copying and modifying the source.
- Production or commercial use requires a commercial licence from SoftGlaze.
- You may not offer it to third parties as a hosted or managed service, redistribute it as a competing product, resell it, or remove or circumvent the licensing mechanism.
- On 1 January 2030 this version converts automatically to the Apache License 2.0.
For commercial licensing, see softglaze.com.
Copyright (c) 2026 Azhar Ali (SoftGlaze).