dazzer-connect 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,30 +1,54 @@
1
- # dazzer-cli
1
+ # dazzer-connect
2
2
 
3
- Sign in to Dazzer from your terminal and get a copy-paste MCP client configuration.
3
+ Dazzer is a memory your AI tools share: they check what you already know before answering, and save what settles. This signs you in from a terminal, for the tools that cannot sign in by themselves.
4
4
 
5
- Requires Node.js 20 or later.
5
+ ## You probably do not need this
6
6
 
7
- ## Install
7
+ Most AI clients can sign in on their own. If yours can, skip this package entirely:
8
+
9
+ - **Claude Code, Codex, Copilot, Cursor, Antigravity, Devin** — install the Dazzer plugin from inside the client. Each one words the command differently, so take it from the source rather than from here: [dazzer-io/dazzer-plugin](https://github.com/dazzer-io/dazzer-plugin). This is the route Dazzer's own first-time setup uses.
10
+ - **Claude's desktop app, Claude in a browser, anything else with a connectors screen** — open its settings, add a connector, paste `https://graph.dazzer.io/mcp`, and sign in there. Nothing to install.
11
+
12
+ Both of those stay connected and renew themselves. That leaves two cases, and they are the reason this exists: a client that only takes a pass you paste in, and a machine with no browser — a server, a container, a remote session.
13
+
14
+ ## Sign in
15
+
16
+ Needs Node.js 22.12 or later. Once installed, the command is `dazzer`.
8
17
 
9
18
  ```bash
10
- # One-off sign-in (downloads and runs the CLI)
11
- npx dazzer-cli auth login
19
+ # One-off, nothing installed
20
+ npx dazzer-connect auth login
12
21
 
13
- # Or install globally — the command is `dazzer`
14
- npm i -g dazzer-cli
22
+ # Or keep it around
23
+ npm i -g dazzer-connect
15
24
  dazzer auth login
16
25
  ```
17
26
 
18
- The CLI opens your browser to sign in (or falls back to a device code when headless). On success it prints MCP client configuration to your terminal.
27
+ Your browser opens to sign in. On a machine with no browser, add `--no-browser`:
28
+
29
+ ```bash
30
+ dazzer auth login --no-browser
31
+ ```
19
32
 
20
- ## Configure Claude Desktop
33
+ You get a link to open on any other device — your phone will do. Sign in there and the terminal finishes on its own.
21
34
 
22
- After `dazzer auth login`, copy the JSON block from your terminal into your Claude Desktop MCP settings file:
35
+ Sign-in does try to notice a missing browser on its own, but do not count on it — on a machine that merely *thinks* it has a screen it will wait for a browser that never opens.
23
36
 
24
- - **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
25
- - **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
37
+ ## What you get, and how long it lasts
38
+
39
+ Sign-in prints two ready-to-paste blocks. **Use the first one if you possibly can** — it names the address only, your client signs in for itself, and the connection renews without you:
40
+
41
+ ```json
42
+ {
43
+ "mcpServers": {
44
+ "dazzer": {
45
+ "url": "https://graph.dazzer.io/mcp"
46
+ }
47
+ }
48
+ }
49
+ ```
26
50
 
27
- The block looks like this (your access token is filled in automatically):
51
+ The second carries a pass, for clients that cannot do that:
28
52
 
29
53
  ```json
30
54
  {
@@ -32,52 +56,59 @@ The block looks like this (your access token is filled in automatically):
32
56
  "dazzer": {
33
57
  "url": "https://graph.dazzer.io/mcp",
34
58
  "headers": {
35
- "Authorization": "Bearer <your-access-token>"
59
+ "Authorization": "Bearer <your-pass>"
36
60
  }
37
61
  }
38
62
  }
39
63
  }
40
64
  ```
41
65
 
42
- Merge it with any existing `mcpServers` entries, save the file, then restart Claude Desktop.
66
+ **That pass lasts about an hour.** Enough to get working now; not a way to set something up and walk away. When it expires, run `dazzer auth login` again — or switch to the first block and stop thinking about it.
43
67
 
44
- If keychain storage failed during login, the printed config is your fallback — paste it before closing the terminal.
68
+ Merge either one with any `mcpServers` entries you already have, save, and restart your client.
45
69
 
46
70
  ## Other commands
47
71
 
48
72
  ```bash
49
- dazzer auth status # show sign-in status
50
- dazzer auth logout # sign out and remove stored tokens
73
+ dazzer auth status # is my sign-in still good?
74
+ dazzer auth logout # cancel your sign-in and remove it from this machine
51
75
  dazzer --help
52
76
  ```
53
77
 
54
- ## Configuration
78
+ `auth status` asks the server rather than trusting what is on disk, so it can tell you your sign-in has been revoked elsewhere.
55
79
 
56
- Production defaults apply when you omit flags and env vars:
80
+ `auth logout` cancels your sign-in at the server and removes it from this machine, and says "Signed out." only when it knows both happened. If your sign-in could not be cancelled right now — the server did not answer, or your credential store would not open or would not let it go — it says so, fails, and keeps it, so running it again can finish. If the server gives an answer that will not change, it removes the sign-in from this machine and tells you it stops working once it goes 30 days unused. A pass you pasted into another app keeps working until it expires, within the hour.
57
81
 
58
- | Source | Variable | Default |
59
- |--------|----------|---------|
60
- | Flag | `--issuer` | — |
61
- | Env | `DAZZER_AUTH_ISSUER` | `https://auth.dazzer.io` |
62
- | Env | `DAZZER_AUTH_CLIENT_ID` | `dazzer-cli-local` |
63
- | Env | `DAZZER_AUTH_RESOURCE` | `https://graph.dazzer.io/mcp` |
82
+ ## Where your sign-in is kept
64
83
 
65
- For local development against a running authorization server:
84
+ Your passes go in your operating system's own credential store — Keychain on macOS, Credential Manager on Windows, Secret Service on Linux. Nothing is written in plain text. The rest, such as which server you signed in to and when it expires, sits in a settings folder alongside your other applications' settings.
66
85
 
67
- ```bash
68
- dazzer auth login --issuer http://localhost:3003
69
- ```
86
+ Plenty of servers and containers have no credential store at all. Sign-in still completes and prints the blocks above, and `auth status` tells you that is what happened rather than claiming you are signed out. On such a machine `auth logout` cannot check for a saved sign-in, so it will not call itself a sign-out; on Linux, `dazzer auth logout --forget-this-machine` removes this machine's record instead, says that nothing was cancelled, and leaves any sign-in still in the credential store where it is. It refuses on macOS and Windows, whose credential store is locked rather than missing, and when sign-in recorded saving a sign-in here.
70
87
 
71
- ## Token storage
88
+ ## Settings
72
89
 
73
- - **Secrets** (access + refresh tokens): OS keychain via `@napi-rs/keyring` (macOS Keychain, Windows Credential Manager, Linux Secret Service). Prebuilt binaries install with the package — no compiler required.
74
- - **Metadata** (issuer, client id, expiry): config directory from `env-paths("dazzer")` — typically `~/Library/Application Support/dazzer/` on macOS.
90
+ Everything points at production unless you say otherwise.
75
91
 
76
- If keychain storage fails, login still completes and prints copy-paste-ready MCP client config to stdout.
92
+ | Setting | What it is | Default |
93
+ |---|---|---|
94
+ | `DAZZER_AUTH_ISSUER` | where you sign in | `https://auth.dazzer.io` |
95
+ | `DAZZER_AUTH_CLIENT_ID` | which client is asking | `dazzer-cli-local` |
96
+ | `DAZZER_AUTH_RESOURCE` | what you are signing in to | `https://graph.dazzer.io/mcp` |
97
+ | `DAZZER_API_BASE_URL` | where Dazzer itself is | `https://graph.dazzer.io` |
77
98
 
78
- ## Develop from source
99
+ The first three are about signing in. The last one is Dazzer itself — the same service, seen from the other side — and it is the address the tool sends to once it has a sign-in to carry. Both addresses have to be `https`; an unencrypted one is refused before anything is sent.
100
+
101
+ Signing in and checking status each take a matching flag — `--issuer`, `--client-id`, `--resource` — which wins over the setting. Against a sign-in server running on your own machine:
79
102
 
80
103
  ```bash
81
- pnpm --filter dazzer-cli build
82
- node packages/oauth-cli/dist/index.js auth login --issuer http://localhost:3003
104
+ dazzer auth login --issuer http://localhost:3003
83
105
  ```
106
+
107
+ ## Something wrong?
108
+
109
+ Email [support@dazzer.io](mailto:support@dazzer.io). If it is a security problem, write to
110
+ [security@dazzer.io](mailto:security@dazzer.io) instead and please do not post it publicly first.
111
+
112
+ ## Licence
113
+
114
+ MIT.