Twinport
Compatibility release: Twinport 1.0.2 is the migration bridge to
focusquest.focusquest 1.9.0 or newer. When that extension is installed,
Twinport exports its explicit configuration and non-secret state, delegates
commands to FocusQuest Copilot Sync, and suppresses its own walkthrough and
weekly background sync. Without a compatible FocusQuest installation,
Twinport continues to work standalone.
Twinport keeps your Copilot configuration consistent across machines by
provisioning and weekly-refreshing your ~/.copilot/ folder (agents, skills,
instructions, MCP servers) from a GitHub repo of your choice. It is the Copilot
configuration-sync tool and one of this publisher's independent developer
tools.
If you keep your Copilot CLI customizations in a Git repository - agents,
skills, path-specific instructions, MCP server definitions - this extension
takes care of pulling that repo into ~/.copilot/ automatically and on
demand, without ever touching your personal databases, OAuth tokens, or
local settings.
What it does
- First-run walkthrough. Walks you through pointing the extension at
the GitHub repo that owns your Copilot config, then runs the first sync.
Twinport: Sync Now. Pulls origin/<branch> from the
configured repo and copies the whitelisted categories into ~/.copilot/.
- Weekly auto-sync. Runs once every 7 days in the background. Toggle
with
twinport.autoSyncWeekly.
- MCP translation. Reads
mcp-config.json (CLI format) from the source
repo and writes mcp.json (VS Code format) into your user profile.
- Protected paths. Refuses to write over your personal state - dtwin
databases, session state, OAuth tokens,
settings.json,
permissions-config.json, config.json, and logs.
60-second quick start
- Install the extension.
- On first run, accept the walkthrough. It asks for your source repository
in
owner/repo form (no default - you must set this before the first
sync).
- Click Sync Now. The extension clones the source, copies the agents,
skills, instructions, and rules into
~/.copilot/, and translates your
MCP config into the VS Code-format mcp.json.
- Run
Twinport: Open ~/.copilot Folder to confirm the layout.
Migration from copilot-config-sync
Twinport is the successor name for what was briefly published as
copilot-config-sync. The package id is now focusquest.twinport, and all
command and configuration namespaces have moved from copilotConfigSync.* to
twinport.*. The old copilotConfigSync.* command ids and globalState keys
remain wired as hidden aliases for one release so existing keybindings and
tasks keep working. See the v1.0.0 migration notes in the Changelog tab
for details.
Migration to FocusQuest
FocusQuest 1.9.0 is the minimum release that owns the canonical
focusquest.copilotSync.* commands and accepts Twinport's typed
focusquest-extension-migration.v1 export. The export contains only explicitly
configured twinport.* settings and non-secret globalState: the last
successful sync time, walkthrough completion, and the prior namespace-migration
marker. Twinport has no stored secrets, and the export never contains
filesystem content or repository credentials.
With FocusQuest 1.9.0 or newer installed, both twinport.* commands and hidden
twinport.legacy.* aliases delegate to the matching canonical commands.
Twinport does not start its first-run walkthrough, weekly scheduler, status
surface, or other background sync work. Run Twinport: Retry Migration to
FocusQuest (twinport.migrateToFocusQuest) to request another idempotent
import. The existing Migrate from copilot-config-sync command remains
available for older local installs and profiles.
Keep Twinport installed until FocusQuest confirms the import and your existing
automation has been exercised. A later release may deprecate the Marketplace
listing after a separately announced compatibility window; this release does
not publish, unpublish, or change Marketplace status.
The sync-health status and safe starter-repository work proposed in Twinport
PR #7 moved to FocusQuest's unified Copilot Sync implementation. It is not
duplicated in this compatibility release, avoiding a second status worker or
competing setup flow.
Configuration reference
| Setting |
Type |
Default |
Purpose |
twinport.sourceRepo |
string |
(none - must be configured) |
GitHub repo to sync from (owner/repo). |
twinport.sourceBranch |
string |
main |
Branch to sync from. |
twinport.categories |
array |
["agents","skills","instructions","rules","copilot-instructions"] |
Subfolders under .github/ in the source repo to copy into ~/.copilot/. |
twinport.translateMcpConfig |
boolean |
true |
Translate mcp-config.json (CLI format) into VS Code's mcp.json. |
twinport.autoSyncWeekly |
boolean |
true |
Run a sync once every 7 days. |
twinport.dryRun |
boolean |
false |
Log what would change without writing files. |
Commands
| Command |
Action |
Twinport: Sync Now |
Run a sync immediately. |
Twinport: Configure Source Repository |
Change the source repo / branch. |
Twinport: Open ~/.copilot Folder |
Reveal ~/.copilot/ in your OS file explorer. |
Twinport: Show Sync Log |
Show the extension's output channel. |
Twinport: Migrate from copilot-config-sync |
Re-run the one-shot legacy-namespace migration. Idempotent. |
Twinport: Retry Migration to FocusQuest |
Ask FocusQuest 1.9.0+ to import Twinport's migration payload again. |
Privacy and data
This extension reads only the GitHub repository you configure and writes
only into ~/.copilot/ - minus a strict allow-list of paths it will never
touch (PROTECTED_PATHS):
- Personal databases (
dtwin-notes.db, session-store.db, and their WAL/SHM siblings)
session-state/** (per-session state)
mcp-oauth-config/** (OAuth tokens and credentials)
logs/**, pkg/** (logs and runtime artifacts)
settings.json, permissions-config.json, config.json (user-owned config)
No telemetry. No network traffic beyond the git fetch of the configured
repository. The extension runs entirely on your machine.
Default source repository
twinport.sourceRepo ships with no default. You must point
it at your own fork or team repository (in <your-org>/<your-repo> form)
before running the first sync. The walkthrough and the
Twinport: Configure Source Repository command both prompt
for this value.
Architecture
Twinport fetches the configured repository into a temporary worktree, copies
enabled categories while preserving protected paths, translates MCP paths for
the local machine, and atomically replaces managed files.
License
MIT.