From d2cd0aa32132da7d55531470d38abd95e0af671a Mon Sep 17 00:00:00 2001 From: saravanakumardb1 Date: Thu, 12 Feb 2026 20:52:06 -0800 Subject: [PATCH] docs(skills): add dual-network setup guide Documents NETWORK=corp|home env var approach for seamless switching between corporate proxy and home network. Covers npm, pnpm, pip, curl, Node.js, lock file cleanup. --- AI.dev/SKILLS/dual-network-setup.md | 129 ++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 AI.dev/SKILLS/dual-network-setup.md diff --git a/AI.dev/SKILLS/dual-network-setup.md b/AI.dev/SKILLS/dual-network-setup.md new file mode 100644 index 00000000..3ad4b8c4 --- /dev/null +++ b/AI.dev/SKILLS/dual-network-setup.md @@ -0,0 +1,129 @@ +# Dual-Network Development Setup + +**Description**: Seamlessly switch between corporate (SSL-intercepting proxy) and home (direct internet) networks using a single environment variable. + +## How It Works + +One env var — `NETWORK` — controls all proxy/registry config for npm, pnpm, pip, curl, and Node.js: + +| `NETWORK` | Effect | +| ----------------- | ---------------------------------------- | +| `corp` | Proxy + JFrog npm registry + relaxed SSL | +| `home` (or unset) | Direct internet, default registries | + +**Script**: `scripts/switch-network.sh` — sourced from `~/.zshrc`, runs on every new shell. + +## Setup (one-time) + +### 1. Add to `~/.zshrc` + +```bash +# Dual-network: set to "corp" at work, "home" at home +export NETWORK=corp +source "$HOME/code/mygh/learning_ai_common_plat/scripts/switch-network.sh" +``` + +### 2. Remove old `~/.npmrc` + +```bash +rm ~/.npmrc +``` + +The env vars (`NPM_CONFIG_REGISTRY`, `NPM_CONFIG_PROXY`, etc.) override `.npmrc` — no config file needed. + +### 3. Open a new terminal + +You'll see either: + +- `🏢 NETWORK=corp — proxy active` +- `🏠 NETWORK=home — direct internet` + +## Switching Networks + +Just edit `~/.zshrc` and change the value: + +```bash +export NETWORK=home # at home +export NETWORK=corp # at work +``` + +Then open a new terminal (or `source ~/.zshrc`). + +## What Gets Configured + +### `NETWORK=corp` + +| Variable | Value | +| ------------------------------ | --------------------------------- | +| `http_proxy` / `https_proxy` | Corporate proxy URL | +| `NPM_CONFIG_REGISTRY` | JFrog Artifactory npm proxy | +| `NPM_CONFIG_PROXY` | Corporate proxy URL | +| `NPM_CONFIG_STRICT_SSL` | `false` | +| `PIP_TRUSTED_HOST` | `pypi.org files.pythonhosted.org` | +| `NODE_TLS_REJECT_UNAUTHORIZED` | `0` | + +### `NETWORK=home` + +All proxy vars are **unset**. npm/pnpm use `registry.npmjs.org`, pip uses `pypi.org` — standard defaults. + +## Lock File Cleanup (one-time, from home) + +After switching to home for the first time, regenerate lock files to remove corporate proxy URLs: + +```bash +# Common platform (pnpm) +cd $HOME/code/mygh/learning_ai_common_plat +rm pnpm-lock.yaml && pnpm install + +# Dashboards (npm) +cd $HOME/code/mygh/learning_voice_ai_agent/admin-dashboard-web +rm package-lock.json && npm install +cd ../user-dashboard-web && rm package-lock.json && npm install +cd ../tracker-dashboard-web && rm package-lock.json && npm install + +# MindLyst +cd $HOME/code/mygh/learning_multimodal_memory_agents +rm package-lock.json && npm install +cd mindlyst-native/web && rm package-lock.json && npm install +``` + +Commit and push the clean lock files. They'll work on both networks going forward. + +## Affected Tools + +| Tool | How proxy is picked up | +| ------------------------- | ----------------------------------------------------------------------------- | +| **npm** | `NPM_CONFIG_REGISTRY`, `NPM_CONFIG_PROXY` env vars | +| **pnpm** | Same `NPM_CONFIG_*` env vars | +| **pip** | `http_proxy`, `https_proxy`, `PIP_TRUSTED_HOST` | +| **curl** | `http_proxy`, `https_proxy` | +| **git** (HTTPS) | `http_proxy`, `https_proxy` | +| **Node.js** (fetch/axios) | `NODE_TLS_REJECT_UNAUTHORIZED` for SSL | +| **Docker** | Not affected — Docker Desktop has its own proxy settings | +| **az CLI** | Reads `http_proxy`/`https_proxy` but may need `REQUESTS_CA_BUNDLE` separately | + +## Troubleshooting + +### `npm install` hangs or times out + +- Verify `NETWORK` is set correctly: `echo $NETWORK` +- Check proxy is reachable: `curl -I $http_proxy` + +### SSL errors from pip + +- Ensure `PIP_TRUSTED_HOST` is set: `echo $PIP_TRUSTED_HOST` +- Or pass explicitly: `pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org ` + +### Lock file has wrong registry URLs after install + +- You installed on the wrong network. Switch, delete lock file, reinstall. + +### Docker builds fail behind proxy + +- Docker doesn't use shell env vars. Configure proxy in Docker Desktop → Settings → Resources → Proxies. + +## Related Skills + +- [Local Development Setup](./local-development.md) — Starting all services +- [Docker Compose](./docker-compose.md) — Container-based development (home network only) +- [Production Readiness](./production-readiness.md) — Pre-release validation