Sno Station
Sno Station is your agents' workstation: open-source software that turns the AI agents you already run into one squad on your own machine. Two heads are better than one, and they get better with every
From domain to offer — one Cloudflare-native workspace. Domain portfolio dashboard, edge redirects, TDS routing, and postback attribution for SEO webmasters and affiliate teams.
PluginsTypeScript · CSSGitHub @investblogOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Real-time redirect console — trace server & client redirects, run local chain analysis, filter tracking noise. Chrome, Firefox, Edge.
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Real-time redirect console for developers — trace server & client redirects, run local chain analysis, filter tracking noise, copy clean reports. Zero telemetry.Read the full README ↗Real-time redirect console for developers — trace server & client redirects, run local chain analysis, filter tracking noise, copy clean reports. Zero telemetry.
http:// → https://, /page → /page/) instead of a duplicated hostname#/route added by a single-page app, history.replaceState/pushState), a dashed #/SPA row under the hops shows where the browser really ended up; it is not counted as a hop, and tokens or keys in that address are masked before storagecurl command that reproduces the chain server-side/, ?, Esc, Ctrl+click to open a URL), and a built-in help drawernotifications permission is requested only when you enable it| Browser | Link |
|---|---|
| Chrome | Chrome Web Store |
| Firefox | Firefox Add-ons |
| Edge | Edge Add-ons |
Browse normally — Redirect Inspector captures every redirect chain in the background via the webRequest API. Click the toolbar icon to open the side panel with grouped chains, status codes, hop counts, and timing. Hit the magnifier on any chain to run local analysis: nine heuristics check for loops, ping-pong patterns, mixed redirect types, and more. Copy the full report, download JSON, or grab a cURL one-liner.
To check a URL without visiting it yourself, pull the handle at the bottom of the panel and paste it — the chain appears labeled "Checked by you". A first-run example chain (www.301.st → 301.st) is seeded on install so the panel is never empty; it is synthetic, no request is made.
Everything happens locally in the side panel (or the Firefox popup). No data is stored externally, transmitted, or logged.
git clone https://github.com/investblog/redirect-inspector.git
cd redirect-inspector
npm install
npm run dev # Chrome MV3 dev server with HMR
npm run dev:firefox # Firefox MV2 dev server
npm run build # Chrome production build
npm run build:firefox # Firefox production build
npm run build:edge # Edge production build
npm run zip:all # Build all platforms
npm run check # Typecheck + lint + test
Redirect Inspector makes zero network requests by default. No analytics, no telemetry, no remote code. Redirect data is stored in browser.storage.local and never leaves the browser. The persisted preferences are theme, noise-filter, and news toggles.
The only optional network activity is the 301.sh news feed: if (and only if) you enable news notifications, the extension fetches https://301.sh/posts.json a few times a day to show a browser notification about new articles. Nothing is ever sent — the request carries no identifiers or browsing data, and disabling the toggle stops it entirely.
The manual "check a URL" feature does not make requests either: it opens the URL as a regular browser navigation in an inactive tab (your cookies apply, the visit lands in history) and closes the tab once the chain is recorded — after up to 2 s more for a client-side address change (longer, capped at 10 s, only while the page keeps changing it).
Built by investblog at 301.st with Claude
Version lives in wxt.config.ts (manifest.version) and must match package.json
(the cut-release workflow enforces this).
Tagging contract: v* tags are cut only by CI, never locally. To release:
bump the version, push to main, then run the Cut release workflow
(Actions → Cut release, or gh workflow run cut-release.yml). It re-runs the
full quality gate and the build on a Linux runner — so no Windows working-copy
artifact (CRLF, path separators, locale-dependent tooling) can reach a release —
then creates the tag and dispatches the workflows below. The submit input
controls store submission; the default chrome-edge auto-submits both Chromium
stores (Firefox stays manual by policy). Pick none for a tag-only release,
e.g. when store listing texts must be updated by hand first.
A v* tag drives two workflows (dispatched by cut-release, since
GITHUB_TOKEN-pushed tags don't fire push triggers):
release.yml — typecheck/lint/test + a GitHub release with the built ZIPs.submit.yml — a thin caller of the shared reusable workflow
investblog/geo-tier-builder/.github/workflows/store-submit.yml@main.Chrome + Edge auto-submit on the tag; Firefox is manual (Actions → Submit to
stores → stores=firefox; AMO burns version numbers forever, so it never
auto-runs). The manual dispatch has a dry_run toggle that validates
credentials without publishing.
Store credentials are this repo's GitHub Actions secrets (CHROME_*,
FIREFOX_*, EDGE_*). API creds are account-level and shared across all
investblog extensions; only the per-extension IDs (CHROME_EXTENSION_ID,
FIREFOX_EXTENSION_ID, EDGE_PRODUCT_ID) differ.
Before changing the release/CI flow: confirm the reusable-workflow ref still
resolves and the secrets exist (gh secret list). Store publishing here depends
on the external investblog/geo-tier-builder workflow — it is a cross-repo
contract, not visible from this repo's code alone.