Skip to content

Commit 0851775

Browse files
authored
Merge pull request #3 from JNHFlow21/codex/bilingual-app-install
docs: add bilingual app installation guide
2 parents 29187fb + 5b537bb commit 0851775

7 files changed

Lines changed: 399 additions & 67 deletions

File tree

.github/workflows/ci.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,10 @@ jobs:
4747
- uses: actions/checkout@v7
4848
- name: Reject common credential and private-path shapes
4949
run: python3 scripts/privacy_scan.py
50+
51+
installer:
52+
runs-on: macos-14
53+
steps:
54+
- uses: actions/checkout@v7
55+
- run: zsh -n scripts/install.sh
56+
- run: test -x scripts/install.sh

CONTRIBUTING.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ PYTHONPATH=src python -m unittest discover -s tests
1313
PYTHONPATH=src python -m unittest discover -s tests/integration
1414
swift build --package-path macos-app/AgentSwitch
1515
python3 scripts/privacy_scan.py
16+
zsh -n scripts/install.sh
1617
```
1718

1819
## Required boundaries

README.md

Lines changed: 53 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
<p align="center">
2+
<strong>English</strong> · <a href="README.zh-CN.md">简体中文</a>
3+
</p>
4+
15
# Agent Switch
26

37
**Define each MCP once. Store each credential once. Project both into every supported local AI agent.**
@@ -14,9 +18,10 @@ Agent Switch replaces those copies with one local registry, one private
1418
credential store, and deterministic per-agent projections.
1519

1620
> [!IMPORTANT]
17-
> Agent Switch is **alpha software**. Today it is installed from source and the
18-
> macOS app is built locally; there is no signed, notarized public app, PyPI
19-
> package, or Homebrew formula yet. See the [roadmap](docs/roadmap.md).
21+
> Agent Switch is **alpha software**. The current installer builds from source
22+
> and requires Xcode. The intended public distribution is a Developer ID-signed,
23+
> notarized GitHub Release installed through Homebrew Cask. That release channel
24+
> is not available yet, so this README does not advertise a fake `brew` command.
2025
2126
## Quick start
2227

@@ -26,74 +31,62 @@ credential store, and deterministic per-agent projections.
2631
- Git
2732
- Python 3.11 or newer
2833
- [`pipx`](https://pipx.pypa.io/)
29-
- Full Xcode with `xcodebuild` for the native app
34+
- Full Xcode with `xcodebuild`
3035

31-
### Install with your coding agent
36+
Install missing command-line prerequisites with:
3237

33-
This is the recommended alpha installation path. Paste the prompt below into
34-
Codex, Claude Code, or another local coding agent:
38+
```bash
39+
brew install python pipx
40+
```
3541

36-
```text
37-
Install and verify Agent Switch on this Mac instead of only explaining the steps.
38-
39-
Repository: https://github.com/JNHFlow21/agent-switch
40-
Checkout: ~/Agent-Workspace/agent-switch
41-
42-
1. Read the repository README and install script first. Verify macOS 14+, Git,
43-
Python 3.11+, pipx, and full Xcode. Install only missing prerequisites.
44-
2. Clone the repository at the checkout path, or update it with `git pull
45-
--ff-only` only when the existing worktree is clean. Never overwrite local work.
46-
3. Install the CLI from the checkout with pipx. Run both Python test suites,
47-
then run `macos-app/AgentSwitch/install.sh`.
48-
4. Initialize the config and run `agent-switch mcp import --dry-run --json`.
49-
Show me the detected MCP IDs, target apps, and required secret NAMES before
50-
adopting or writing native agent configs.
51-
5. Run Doctor before Reconcile. Apply changes only when no target is blocked,
52-
then verify `agent-switch doctor --strict`, `agent-switch agents`,
53-
`agent-switch mcp list`, and `agent-switch secret list`.
54-
6. Never request, print, log, or pass a secret as a command argument. Never put
55-
one in a project .env file. If a value is required, let me enter it in the
56-
app or pipe it locally to `agent-switch secret set --stdin NAME`.
57-
58-
Report what was installed, which agents were enrolled, missing secret NAMES
59-
only, and any remaining action. Confirm that ~/Applications/Agent Switch.app opens.
42+
### Install
43+
44+
Run one verified source-install command:
45+
46+
```bash
47+
git clone https://github.com/JNHFlow21/agent-switch.git && cd agent-switch && ./scripts/install.sh
6048
```
6149

62-
Your first successful setup should produce all three results:
50+
The installer:
51+
52+
1. verifies macOS, Python, pipx, and Xcode;
53+
2. installs the Python CLI in an isolated pipx environment;
54+
3. builds and installs the native app at `~/Applications/Agent Switch.app`;
55+
4. creates a neutral, empty Agent Switch config if none exists;
56+
5. opens the app without adopting MCPs or rewriting native agent configs.
57+
58+
Expected first result:
6359

6460
```text
65-
agent-switch --version -> agent-switch 0.2.0
66-
agent-switch doctor --strict -> exits successfully with no managed drift
67-
Native app -> opens from ~/Applications/Agent Switch.app
61+
agent-switch --version -> agent-switch 0.2.0
62+
Native app -> opens from ~/Applications/Agent Switch.app
6863
```
6964

70-
<details>
71-
<summary>Install manually from source</summary>
65+
Then preview your existing user-level command/stdio MCPs:
7266

7367
```bash
74-
brew install python pipx
75-
pipx ensurepath
76-
export PATH="$HOME/.local/bin:$PATH"
68+
agent-switch mcp import --dry-run --json
69+
agent-switch doctor
70+
```
7771

78-
mkdir -p "$HOME/Agent-Workspace"
79-
git clone https://github.com/JNHFlow21/agent-switch.git \
80-
"$HOME/Agent-Workspace/agent-switch"
81-
cd "$HOME/Agent-Workspace/agent-switch"
72+
Review the detected MCP IDs, target apps, and required secret **names** before
73+
running `agent-switch mcp import --adopt` or `agent-switch reconcile`.
8274

83-
pipx install .
84-
PYTHONPATH=src python3 -m unittest discover -s tests
85-
PYTHONPATH=src python3 -m unittest discover -s tests/integration
86-
macos-app/AgentSwitch/install.sh
75+
<details>
76+
<summary>Why not npm, NPX, or a public Homebrew command?</summary>
8777

88-
agent-switch write-default-config
89-
agent-switch mcp import --dry-run --json
90-
agent-switch doctor
91-
agent-switch reconcile
92-
agent-switch doctor --strict
78+
Agent Switch is a native macOS application with a Python CLI; Node.js is not
79+
part of its runtime. npm/NPX would add an unrelated dependency and still need
80+
to build or download the macOS app.
81+
82+
The correct end-user channel is:
83+
84+
```text
85+
signed + notarized release artifact -> GitHub Releases -> Homebrew Cask
9386
```
9487

95-
Review the import preview before using `agent-switch mcp import --adopt` on
96-
existing agent configurations.
88+
Until that artifact exists, the source installer above is the shortest honest
89+
path. See the [roadmap](docs/roadmap.md).
9790

9891
</details>
9992

@@ -218,7 +211,7 @@ It does **not** yet provide:
218211
- project-scoped MCP discovery;
219212
- automatic support for unknown agents;
220213
- a signed and notarized downloadable app;
221-
- published PyPI or Homebrew distribution;
214+
- a published Homebrew Cask or Python package;
222215
- a password-manager or hardware-backed credential vault.
223216

224217
These are limitations, not hidden features. Planned work lives in the
@@ -252,17 +245,12 @@ agent-switch reconcile
252245
See [Unified MCP Registry](docs/mcp-registry.md) for lifecycle commands and
253246
safe import behavior.
254247

255-
## Update from source
248+
## Update
249+
250+
From the cloned repository:
256251

257252
```bash
258-
cd "$HOME/Agent-Workspace/agent-switch"
259-
git pull --ff-only
260-
pipx uninstall agent-switch
261-
pipx install .
262-
PYTHONPATH=src python3 -m unittest discover -s tests
263-
PYTHONPATH=src python3 -m unittest discover -s tests/integration
264-
macos-app/AgentSwitch/install.sh
265-
agent-switch doctor
253+
git pull --ff-only && ./scripts/install.sh
266254
```
267255

268256
Agent Switch does not silently update itself, third-party CLIs, or Skill

0 commit comments

Comments
 (0)