Skip to content

Repository files navigation

A glowing chain link passing through a claw bracket and shield gateway into an isolated browser window cube, with circuit traces fanning out to three platform pedestals.

Claw Links

Claw Links is a cross-platform launcher for opening Discord links in a managed, hardened Firefox lane instead of the user's normal browser session.

The current repo scaffold focuses on:

  • architecture for Windows, macOS, and Linux
  • self-building Firefox from upstream Mozilla source
  • licensing, trademark, and redistribution constraints
  • a baseline Firefox enterprise policy set for the managed browser install

Direction

We are standardizing on:

  • browser engine/runtime: Mozilla Firefox
  • build source: upstream Mozilla source, built by us
  • distribution model: modified, self-built, unbranded browser bundle plus a small launcher
  • safety model: dedicated managed Firefox install + dedicated managed profile + optional OS-specific stronger isolation later

Why Firefox:

  • open source
  • official cross-platform support
  • separate profiles are first-class
  • enterprise policies work on Windows, macOS, and Linux

Repo layout

Current product shape

V1 is intentionally small:

  1. Ship a self-built Firefox-derived browser bundle under our own name.
  2. Install a locked-down policies.json next to that browser.
  3. Create a dedicated app-owned profile directory on first run.
  4. Launch only untrusted links through that browser/profile pair.

That gets us:

  • no borrowed cookies from the user's everyday browser
  • no sync or saved-password prompts in the untrusted lane
  • forced HTTPS-only mode
  • locked-down download behavior
  • blocked camera, mic, location, notifications, and screen share requests
  • an allowlist-only extension model

Important note on naming

Because a modified Firefox build cannot be redistributed under Mozilla trademarks without prior written permission, this project should assume a non-Firefox product name and non-Firefox branding from day one. Details are in docs/licensing-and-redistribution.md.

Next implementation steps

  • add the launcher CLI and per-OS installers
  • automate upstream Firefox builds for Windows, macOS, and Linux
  • decide whether app updates come from our own signed release channel or from user-managed reinstall/upgrade flows
  • add optional stronger isolation wrappers:
    • Windows: Windows Sandbox
    • Linux: AppArmor or a sandbox wrapper
    • macOS: sandboxed helper app later

Launcher scaffold

The launcher is now scaffolded in .NET because it gives us a cross-platform CLI while matching the toolchain already available in this workspace.

Current command:

dotnet run --project .\src\ClawLinks.Launcher\ClawLinks.Launcher.csproj -- open https://discord.com

Current responsibilities:

  • validate that the URL is http or https
  • resolve the per-OS app, browser, and profile paths
  • discover the managed browser bundle from browser/bundle-manifest.json
  • install policies.json into the manifest-declared bundle layout
  • validate that manifest-declared support files exist before launch
  • bootstrap a deterministic managed profile with first-run markers and a profile state manifest
  • launch the managed browser bundle if one exists at an expected path
  • print bundle diagnostics after a successful open
  • append local diagnostics records under the app data logs/ directory for both success and failure cases

The bundle manifest now also carries build provenance:

  • architecture
  • upstream product line
  • source revision
  • release channel
  • package digest
  • installed digest

Shared interfaces:

  • IPathResolver
  • IBrowserBundleBootstrapper
  • IProfileBootstrapper
  • IBrowserLauncher

Windows packaging stub:

.\packaging\windows\Install-WindowsBrowserStub.ps1

That creates a versioned browser bundle, writes the bundle manifest, and lays down the autoconfig support files alongside distribution\policies.json.

Windows smoke test:

.\packaging\windows\Invoke-WindowsSmokeTest.ps1

That runs the Windows stub install into an isolated app-data root, sets CLAW_LINKS_APPDATA_ROOT for the launcher, and verifies that the launcher bootstraps the profile and starts the stub browser process.

Windows real bundle install:

.\packaging\windows\Install-WindowsBrowserBundle.ps1 `
  -SourceArchivePath C:\path\to\claw-browser-win64.zip `
  -BundleVersion 128.0.1-build1 `
  -SourceRevision firefox-128.0.1esr

For local packaging work, the same script can also install from an extracted bundle directory with -SourceDirectoryPath. Using an archive is preferred because packageDigest can then track the actual packaged artifact rather than falling back to the source executable hash.

About

Cross-platform launcher that opens Discord links in a managed, hardened Firefox profile (early scaffold).

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages