Roaming Copilot CLI — Multi-Device Setup¶
Last updated: 2026-04-20 Status: ✅ M23 deployed on W365 (2026-04-20), M24-M26 pending
Overview¶
Sutheesh runs Copilot CLI across multiple devices with a shared "brain" — same personality, same memory, same context — regardless of which device he's on.
💻 Laptop (Corp, Primary) ──┐
☁️ W365 (Corp, Background) ──┼──→ OneDrive Personal ──→ 🧠 Same brain
🍎 Mac (Personal, Mobile) ──┘ (symlink sync) Same memory
📱 iPad → W365 (Remote) ──┘ Same context
Architecture¶
What makes Copilot CLI "the same"¶
The CLI's personality, rules, and memory come from local files, not from the GitHub account:
| Component | Source | Synced? |
|---|---|---|
| Personality & rules | copilot-instructions.md |
✅ OneDrive sync |
| Project knowledge | copilot-instructions-reference.md |
✅ OneDrive sync |
| Session memory | session-journal.md |
✅ OneDrive sync |
| Secrets (PAT, GA keys) | ~/.copilot/secrets/ |
✅ OneDrive sync |
| Model (Opus 4.6) | Selected per session (/model) |
Manual per device |
| MCP servers | mcp-config.json + local installs |
Machine-local |
| Session history DB | session-store.db |
❌ Not synced (SQLite) |
| Plugins/skills | Auto-installed per device | Machine-local |
| Config paths | config.json |
Machine-local (different usernames) |
Sync Strategy — OneDrive Personal Profile Script¶
Deployed 2026-04-20 — zero corp dependencies
Symlinks were abandoned (need admin/Developer Mode on W365). Instead, a bidirectional copy-on-open script runs from the PowerShell profile. The sync logic lives entirely in personal OneDrive.
Architecture:
📁 OneDrive Personal (CopilotCLI_Sync/) ← source of truth, syncs everywhere
├── copilot-instructions.md ← personality & rules
├── copilot-instructions-reference.md ← project knowledge
├── session-journal.md ← session memory
├── sync-brain.ps1 ← the sync engine
└── starter-prompts/ ← cert content prompts (14 files)
💻 Laptop → PS profile calls sync-brain.ps1 → copies newer files ↔ ~/.copilot/
☁️ W365 → PS profile calls sync-brain.ps1 → copies newer files ↔ ~/.copilot/
🍎 Mac → PS profile calls sync-brain.ps1 → auto-detects macOS OneDrive path
How it works:
sync-brain.ps1lives inOneDrive\CopilotCLI_Sync\(personal OneDrive — syncs to all devices)- Each device has ONE line in its PowerShell
$PROFILE: - On every terminal open, the script compares timestamps:
- If OneDrive version is newer → copies to
~/.copilot/ - If local version is newer → copies to OneDrive
- If OneDrive version is newer → copies to
- Auto-detects OS — handles Windows, macOS, and Linux OneDrive paths
Mac setup (one-liner):
Why not symlinks?
| Approach | Why rejected |
|---|---|
| File symlinks | Require admin or Developer Mode — W365 has neither |
| Hard links | Break when OneDrive replaces files during sync |
| Directory junctions | Only work for directories, not individual files |
| Copy-on-open | ✅ No admin, no special permissions, works everywhere |
What stays machine-local¶
| File | Why not synced |
|---|---|
config.json |
Contains machine-specific paths (C:\Users\ssutheesh vs W365 username) |
mcp-config.json |
Contains machine-specific paths to MCP server installs |
session-store.db |
SQLite + cloud sync = corruption risk |
session-state/ |
Per-session artifacts, not needed across devices |
mcp-servers/ |
Locally installed server code + node_modules |
skills/, installed-plugins/ |
Auto-installed when CLI starts |
secrets/ |
Security best practice — kept local-only. Re-copy when PAT rotates via setup package. |
Device Comparison¶
| Feature | 💻 Laptop (Enterprise) | ☁️ W365 (Enterprise) | 🍎 Mac (Personal susanthgit) |
|---|---|---|---|
| GitHub account | ssutheesh_microsoft (EMU) |
ssutheesh_microsoft (EMU) |
susanthgit (personal) |
| Brain/memory | ✅ Full | ✅ Full (synced) | ✅ Full (synced) |
| Model (Opus 4.6) | ✅ Enterprise | ✅ Enterprise | ⚠️ Check Copilot Individual |
| WorkIQ | ✅ | ✅ | ❌ Needs corp auth |
| ATK / Agent skills | ✅ | ✅ | ❌ Needs corp auth |
| YouTube MCP | ✅ | ✅ | ✅ (OAuth, not GitHub-tied) |
| m365-admin-graph MCP | ✅ | ✅ | ✅ (tenant creds, not GitHub-tied) |
| Azure MCP | ✅ | ✅ | ✅ (separate az login) |
| Learn Docs MCP | ✅ | ✅ | ✅ (public HTTP) |
| Pipeline ops (gh CLI) | ✅ via PAT | ✅ via PAT | ✅ via same PAT |
| Site building (Hugo) | ✅ | ✅ | ✅ |
| Always on | ❌ (laptop) | ✅ (cloud PC) | ❌ (personal device) |
Setup Package (M23)¶
Files¶
| Location | Purpose |
|---|---|
C:\ssClawy\w365-setup\prepare-package.ps1 |
Runs on LAPTOP — bundles everything into a ZIP |
C:\ssClawy\w365-setup\setup-w365.ps1 |
Runs on W365 — installs everything from the ZIP |
C:\ssClawy\w365-setup\w365-copilot-package.zip |
15.7 MB transfer package |
What the setup script installs (via Scoop — no admin needed)¶
No admin rights on W365
Corp policy blocks winget/MSI installs. The setup script was updated to use Scoop, which installs everything to ~/scoop/ in user space.
| Tool | Scoop ID | Version (Apr 2026) | Purpose |
|---|---|---|---|
| Node.js 24.x LTS | nodejs-lts |
24.15.0 | MCP servers, npm packages |
| Git | git |
2.53.0 | Version control |
| GitHub CLI | gh |
2.90.0 | Pipeline operations, auth |
| Hugo Extended | hugo-extended |
0.160.1 | Site building |
| Python | python |
3.14.4 | OG generators, pipeline scripts |
| Windows Terminal | windows-terminal |
Latest | Better terminal experience |
| Azure CLI | azure-cli |
(optional) | Azure deploys — install when needed |
What the package includes¶
- 3 instruction files (instructions, reference, journal)
- 3 secret files (GitHub PAT, GA service account, GA key)
- m365-admin-graph MCP server (with full node_modules)
- YouTube MCP OAuth credentials (credentials.json + tokens.json)
- config.json and permissions-config.json (auto-adapted for W365 paths)
- mcp-config.json (auto-adapted for W365 paths)
Setup flow¶
Scoop installs are more reliable one at a time
The automated setup script can stall during Scoop downloads. Running scoop install <tool> individually is more reliable. Long pasted PowerShell commands also break in W365 RDP — keep commands short.
- On laptop:
pwsh prepare-package.ps1→ creates ZIP - Copy ZIP to
OneDrive Personal\W365-Setup\→ auto-syncs to W365 - On W365: Install Scoop first:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Forcethenirm get.scoop.sh | iex - Install tools one by one:
scoop install git,scoop install nodejs-lts,scoop install gh,scoop install hugo-extended,scoop install python,scoop install windows-terminal - Extract package:
Expand-Archive .\w365-copilot-package.zip -DestinationPath .\package -Force - Run config setup (Phase 3-7 commands — copies configs, adapts paths, sets GH_TOKEN)
- Fix Copilot CLI PATH: add
$env:LOCALAPPDATA\GitHub CLI\copilotto user PATH - Clone repos:
git cloneaguidetocloud-revamp + guided intoC:\ssClawy - Close/reopen terminal →
gh auth login(susanthgit,susanth.ss@gmail.com) →copilot - Delete the OneDrive\W365-Setup folder (contains secrets!)
Use Cases¶
W365 as background runner¶
- Kick off long builds/deploys → disconnect → come back to results
- Trigger pipeline runs across all 5 repos → go do customer calls → check later
- Run bulk operations (YouTube description updates, data refreshes)
- Access from iPad/Mac via Remote Desktop when away from laptop
Mac as mobile workstation¶
- Site building and content creation on the go
- Learning sessions (same context as laptop)
- Use personal
susanthgitaccount — avoids enterprise policy/CA blocks - 95% identical experience (loses WorkIQ + ATK only)
Conflict Prevention¶
- Laptop is the journal master — primary machine for session journal updates
- If W365 session updates the journal, laptop picks it up via OneDrive sync
- Avoid running sessions on BOTH machines simultaneously (OneDrive conflict risk)
- If a conflict occurs, OneDrive creates a
(conflict)copy — manually merge
YouTube Automation Capabilities¶
Researched 2026-04-17. Capabilities via YouTube MCP + Data API v3:
| Action | Can do? | How |
|---|---|---|
| Update descriptions | ✅ Yes | update_video_seo tool — batch across all videos |
| Update titles | ✅ Yes | update_video_seo tool |
| Update tags | ✅ Yes | update_video_seo tool |
| Add timestamps to description | ⚠️ Manual timestamps needed | Can format + insert, but can't watch video to generate timestamps |
| Post a comment as channel owner | ❌ Not in current MCP | YouTube API supports commentThreads.insert, but MCP server doesn't expose it |
| Pin a comment | ❌ Impossible | YouTube has NO API for pinning — manual in YouTube Studio only |
| Auto-generate chapters | ❌ No | YouTube's own auto-chapters do this, can't be triggered via API |
High-value YouTube ops available now¶
- Bulk description footer — add standardised promo links (tools, certs, Ko-fi, socials) to all 74 videos
- Tag standardisation — consistent tag taxonomy across all videos
- Title optimisation — SEO improvements based on analytics data
- Analytics-driven decisions — top performers, traffic sources, topic suggestions
Task Board References¶
| Task | Description | Status |
|---|---|---|
| M23 | Set up Copilot CLI on W365 | ✅ Deployed 2026-04-20 |
| M24 | OneDrive Personal brain sync | ✅ Deployed 2026-04-20 |
| M25 | Mac setup (personal account) | ⬜ Pending |
| M26 | Validate enterprise licence on non-corp device | ⬜ Pending |
Lessons Learned (2026-04-20 deployment)¶
- No admin on W365 — corp policy blocks winget/MSI installs. Scoop (
irm get.scoop.sh | iex) is the zero-admin solution. - Scoop's automated script can stall — running
scoop install <tool>one at a time is more reliable than a loop in a script. - Long PowerShell commands break in W365 RDP — multi-line commands get split at wrong points when pasted. Keep commands short.
- OneDrive Personal is the sync backbone — Google Drive can't be installed (corp policy). OneDrive Personal works perfectly.
copilotbinary needs PATH fix — installs toAppData\Local\GitHub CLI\copilot\which isn't auto-added to PATH.- Git Credential Manager — select "manager" + "always use". Auth with
susanthgit(susanth.ss@gmail.com). - Symlinks abandoned — file symlinks need admin/Developer Mode (W365 has neither). Hard links break with OneDrive sync. Copy-on-open profile script is the practical solution.
- Secrets stay local — syncing credentials through personal cloud storage is a security/compliance risk. Keep secrets local-only; use the setup package to distribute when needed.
- Corp PS profile auto-syncs to W365 — Documents folder is redirected to corp OneDrive, so the one-liner in
$PROFILEappears on W365 automatically. Non-corp devices add the same one-liner manually.