CrossEnv — Platform-Aware VSCode Settings Profiles Without the Manual Pain
Every dev who switches between Windows, Mac, and Linux has a settings.json graveyard of commented-out font paths and terminal configs. CrossEnv is a VSCode extension that lets you define per-OS profile blocks and auto-switches on sync. No more 'why is my terminal broken on the work MacBook.'
Difficulty
intermediate
Category
Developer Tools
Market Demand
High
Revenue Score
6/10
Platform
VS Code Extension
Vibe Code Friendly
No
Hackathon Score
5/10
Validated by Real Pain
— sourced from real community discussions
Developers who work across Windows, Mac, and Linux must manually adjust settings like font paths and terminal executables every time they sync VSCode, creating daily friction with no native solution.
What is it?
VSCode Settings Sync is great until you have three machines with three different font paths, shell executables, and file watcher limits. Devs currently maintain manual comments or separate settings files — a silent daily tax on every multi-OS developer. CrossEnv adds a profiles key to settings.json with per-platform overrides, reads the current OS on activate, and hot-swaps the relevant block. The extension ships as a VSIX, so distribution is a single marketplace publish. Native VSCode extension API is stable and fully supports workspace configuration reads and writes, making this entirely buildable in a weekend with TypeScript.
Why now?
VSCode Settings Sync shipped as stable in 2023 but explicitly does not support per-machine overrides — a known gap with 500+ GitHub upvotes on the feature request as of early 2026.
- ▸Per-OS profile blocks in settings.json with auto-detection on activation.
- ▸One-click profile export to shareable JSON for team onboarding.
- ▸Conflict highlighter that flags settings overridden by a wrong-OS profile.
- ▸CLI sync command for headless dev environments and dotfile repos.
Target Audience
Full-stack developers using 2+ machines across different OSes — estimated 3M+ VSCode users with multi-machine setups.
Example Use Case
Sara, a backend dev with a Windows gaming rig and a MacBook Pro, installs CrossEnv, defines her Windows and Mac font and terminal paths in one file, and never touches settings.json manually again when she switches machines.
User Stories
- ▸As a full-stack dev on Windows and Mac, I want OS-specific font and terminal paths to auto-apply, so that I never debug a broken terminal after syncing.
- ▸As a team lead, I want to export a CrossEnv profile JSON, so that new hires get a working multi-OS setup in one paste.
- ▸As a Linux dev, I want a conflict warning when my Mac profile overrides a Linux setting, so that I catch mistakes before they break my build tools.
Done When
- ✓Profile swap: done when opening VSCode on Mac applies the mac profile block and the status bar shows 'CrossEnv: mac'.
- ✓Export: done when user runs Export Profile command and valid JSON appears in clipboard.
- ✓Conflict highlight: done when a setting overridden by a different-OS profile shows a yellow warning squiggle in settings.json.
- ✓License gate: done when free-tier user adding a 3rd profile sees an upgrade prompt linking to Gumroad.
Is it worth building?
$4/month x 500 users = $2,000 MRR. Realistic given 3M+ multi-machine VSCode users; 500 paid at month 4 requires 0.017% conversion from organic search and Reddit.
Unit Economics
CAC: $5 via Reddit organic replies. LTV: $48 (12 months at $4/month). Payback: 1 month. Gross margin: 96%.
Business Model
One-time purchase or $4/month subscription via VSCode marketplace or Gumroad
Monetization Path
Free tier with 2 profiles, paid unlocks unlimited profiles and team sync export.
Revenue Timeline
First dollar: week 2 via Gumroad beta. $1k MRR: month 4. $3k MRR: month 10.
Estimated Monthly Cost
Gumroad fees: ~$15, Vercel landing page: $0 (hobby), Sentry: $0 (free tier). Total: ~$15/month.
Profit Potential
Side income viable at $1k–$3k MRR.
Scalability
Medium — can add team profile export, Cursor IDE support, and Neovim config parity.
Success Metrics
Week 1: 200 installs. Week 2: 30 paid. Month 2: 80% retention among paid.
Launch & Validation Plan
Post in r/vscode and r/webdev asking if anyone has this pain, collect 50 upvotes as green light, then build.
Customer Acquisition Strategy
First customer: reply to every r/vscode thread about Settings Sync frustrations with a direct beta link offering free lifetime access. Ongoing: VSCode marketplace SEO, Hacker News Show HN, dev Twitter/X.
What's the competition?
Competition Level
Low
Similar Products
VSCode Settings Sync (native, no profiles), Settings Cycler extension (keybinding toggle, not OS-aware), dotbot (CLI only, no VSCode GUI).
Competitive Advantage
Native Settings Sync has zero profile concept — this fills an explicit gap with zero competing extensions as of May 2026.
Regulatory Risks
Low regulatory risk.
What's the roadmap?
Feature Roadmap
V1 (launch): OS detection, profile swap, status bar, conflict highlight. V2 (month 2-3): team export, profile history, Cursor IDE support. V3 (month 4+): cloud sync, org license keys.
Milestone Plan
Phase 1 (Week 1): schema design + OS detect + profile swap ships. Phase 2 (Week 2): conflict highlight + export + Gumroad gate live. Phase 3 (Month 2): marketplace publish + 200 installs.
How do you build it?
Tech Stack
VSCode Extension API, TypeScript, vsce CLI — build logic in Cursor, scaffold with Yeoman VSCode generator, test in Extension Development Host.
Suggested Frameworks
VSCode Extension API, TypeScript, vsce
Time to Ship
1 week
Required Skills
VSCode Extension API, TypeScript, JSON schema parsing.
Resources
VSCode extension docs, vsce publish guide, Gumroad for payments.
MVP Scope
src/extension.ts (activate + OS detect + profile swap), src/profileManager.ts (read/write settings.json), src/constants.ts (OS keys), package.json (manifest + activation events), .vscodeignore, README.md (demo GIF), CHANGELOG.md, .env.example.
Core User Journey
Install extension -> add profiles block to settings.json -> switch machine -> extension auto-applies correct profile on VSCode open.
Architecture Pattern
Extension activates -> reads process.platform -> loads matching profile block from settings.json -> calls vscode.workspace.getConfiguration().update() -> confirms swap via status bar.
Data Model
ProfileConfig has OS key, settings object, and active boolean. User has one LicenseKey. LicenseKey has tier and expiry.
Integration Points
VSCode Extension API for config read/write, vsce for marketplace publish, Gumroad for license validation.
V1 Scope Boundaries
V1 excludes: cloud profile sync, team dashboard, Cursor/Neovim support, mobile.
Success Definition
A developer on three different OSes installs the extension, configures all three profiles in 5 minutes, and never manually edits settings.json for OS-specific paths again.
Challenges
Distribution is the hard problem — VSCode marketplace search is crowded and organic ranking takes months. Reddit and Hacker News are the only fast channels.
Avoid These Pitfalls
Do not try to override workspace settings — user-level settings only or you will break project configs. Do not require a backend for V1 — local license check via Gumroad is sufficient.
Security Requirements
No auth required for V1. License key validated client-side via Gumroad API. No user data leaves the machine.
Infrastructure Plan
Extension runs entirely locally. Landing page on Vercel hobby plan. Gumroad handles payments and license keys. Sentry free tier for crash reports.
Performance Targets
Extension activate under 50ms. Profile swap under 100ms. No network calls on activate in free tier.
Go-Live Checklist
- ☐Security audit complete.
- ☐Payment flow tested end-to-end.
- ☐Error tracking (Sentry) live.
- ☐Monitoring dashboard configured.
- ☐Custom domain set up with SSL.
- ☐Privacy policy and terms published.
- ☐5+ beta users signed off.
- ☐Rollback plan documented.
- ☐Launch post drafted for ProductHunt and Reddit.
First Run Experience
On first run: extension shows a welcome notification with a sample profiles block snippet. User can immediately paste the snippet into settings.json and the extension detects their OS and confirms the active profile in the status bar. No account or config required.
How to build it, step by step
1. Define settings.json schema for profiles block with OS keys as spec. 2. Scaffold extension with yo code generator using TypeScript template. 3. Implement OS detection in extension.ts using process.platform. 4. Build profileManager.ts to read profiles block and call vscode.workspace.getConfiguration().update(). 5. Add status bar item showing active profile name. 6. Write conflict highlighter that marks settings overridden by inactive profiles. 7. Add export command that writes current profile to clipboard as JSON. 8. Write unit tests for profile merge logic using VSCode test runner. 9. Set up Gumroad product with license key webhook for paid tier gating. 10. Verify: install VSIX locally, switch OS simulation via env var, confirm profile swap fires correctly end-to-end.
Generated
May 13, 2026
Model
claude-sonnet-4-6
Disclaimer: Ideas on this site are AI-generated and may contain inaccuracies. Revenue estimates, market demand figures, and financial projections are illustrative assumptions only — not financial advice. Do your own research before making any business or investment decisions. Technology availability, pricing, and market conditions change rapidly; always verify details independently.