@moreai/code 0.1.0-beta.1 → 0.1.0-beta.3

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.
Files changed (45) hide show
  1. package/README.md +241 -274
  2. package/dist/daemon.mjs +1225 -2571
  3. package/dist/locales.dat +0 -0
  4. package/dist/moreai.mjs +204 -365
  5. package/dist/resources/file-acl/macos/moreai-file-acl +0 -0
  6. package/media/approve.webp +0 -0
  7. package/media/connect.webp +0 -0
  8. package/media/helpers.webp +0 -0
  9. package/media/session.webp +0 -0
  10. package/media/start.webp +0 -0
  11. package/package.json +16 -9
  12. package/dist/locales/am.json +0 -1185
  13. package/dist/locales/bho.json +0 -1185
  14. package/dist/locales/bn.json +0 -1185
  15. package/dist/locales/da.json +0 -1185
  16. package/dist/locales/de.json +0 -1185
  17. package/dist/locales/es-419.json +0 -1187
  18. package/dist/locales/es.json +0 -1187
  19. package/dist/locales/fi.json +0 -1185
  20. package/dist/locales/fil.json +0 -1185
  21. package/dist/locales/fr.json +0 -1187
  22. package/dist/locales/gu.json +0 -1185
  23. package/dist/locales/ha.json +0 -1185
  24. package/dist/locales/hi.json +0 -1185
  25. package/dist/locales/id.json +0 -1149
  26. package/dist/locales/it.json +0 -1187
  27. package/dist/locales/ja.json +0 -1149
  28. package/dist/locales/kn.json +0 -1185
  29. package/dist/locales/ko.json +0 -1149
  30. package/dist/locales/ml.json +0 -1185
  31. package/dist/locales/mr.json +0 -1185
  32. package/dist/locales/nb.json +0 -1185
  33. package/dist/locales/nl.json +0 -1185
  34. package/dist/locales/pt-BR.json +0 -1187
  35. package/dist/locales/ru.json +0 -1261
  36. package/dist/locales/sv.json +0 -1185
  37. package/dist/locales/sw.json +0 -1185
  38. package/dist/locales/ta.json +0 -1185
  39. package/dist/locales/te.json +0 -1185
  40. package/dist/locales/th.json +0 -1149
  41. package/dist/locales/tr.json +0 -1185
  42. package/dist/locales/uk.json +0 -1261
  43. package/dist/locales/vi.json +0 -1149
  44. package/dist/locales/zh-TW.json +0 -1148
  45. package/dist/locales/zh.json +0 -1148
package/README.md CHANGED
@@ -1,337 +1,304 @@
1
- # More AI Code (`moreai`)
1
+ <h1 align="center">More AI Code</h1>
2
2
 
3
- A terminal coding agent that runs on its own. The desktop app is optional: the CLI
4
- starts a bundled local engine when no More AI app is running.
3
+ <p align="center">
4
+ <b>An AI coding agent for your terminal.</b><br>
5
+ Your own model keys, an engine on your machine, and cloud runs when you want them.
6
+ </p>
5
7
 
6
- ## Install the preview
8
+ <p align="center">
9
+ <a href="https://www.npmjs.com/package/@moreai/code"><img alt="npm" src="https://img.shields.io/npm/v/@moreai/code/beta?label=npm%20beta&color=ff7a45"></a>
10
+ <img alt="Node.js 22+" src="https://img.shields.io/badge/node-%E2%89%A522-339933">
11
+ <img alt="macOS · Linux · Windows" src="https://img.shields.io/badge/macOS%20%C2%B7%20Linux%20%C2%B7%20Windows-555">
12
+ <a href="https://more-ai.net"><img alt="more-ai.net" src="https://img.shields.io/badge/more--ai.net-website-111"></a>
13
+ </p>
7
14
 
8
- Requires Node.js 22 or newer on macOS, Linux or Windows.
15
+ <p align="center">
16
+ <img alt="More AI Code exploring a repository, editing a file, writing a test, running it and summarising the change" src="https://cdn.jsdelivr.net/npm/@moreai/code@0.1.0-beta.3/media/session.webp" width="860">
17
+ </p>
9
18
 
10
- ```sh
11
- npm install -g @moreai/code@beta
12
- moreai setup
13
- cd your-project
14
- moreai
15
- ```
19
+ More AI Code is an assistant that works in your project from the terminal.
20
+ Describe a task in plain words — "fix the failing test", "add validation to
21
+ the signup form", "explain how billing works" — and it reads the code, edits
22
+ the files, runs the commands and tests, and tells you what it changed. You stay
23
+ in control: anything risky waits for your yes.
16
24
 
17
- The `beta` tag follows preview releases. To check for a new version and update
18
- the global installation:
25
+ It works with the AI you already have: an API key from more than 30 providers, a
26
+ ChatGPT, GitHub Copilot or Claude subscription, or a model running on your own
27
+ computer. No account and no desktop app are needed.
28
+
29
+ ## Install
19
30
 
20
31
  ```sh
21
- moreai update
22
- moreai update --install
23
- moreai --version
32
+ npm install -g @moreai/code
24
33
  ```
25
34
 
26
- `moreai update` checks the npm release tag and shows the available version;
27
- `--install` runs the global npm update. You can also update manually with
28
- `npm install -g @moreai/code@beta`. The CLI checks for updates in the
29
- interactive session and shows a quiet notice when a new version is available.
30
-
31
- If you received a packaged `.tgz` archive instead of installing from npm,
32
- install it with `npm install -g ./moreai-code-<version>.tgz`, then run the same
33
- `moreai setup` step. The archive includes the headless engine. Tarball installs
34
- do not receive updates until you install a newer archive or switch to the npm
35
- `beta` tag.
36
-
37
- `moreai setup` walks through a More AI account and an AI provider:
38
-
39
- - **AI provider** gives the agent a model on this computer. Connect an API key,
40
- a local model (Ollama, LM Studio) or a supported provider subscription
41
- through `moreai auth`. If a key is already in your environment
42
- (`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, …) the first run offers it at the top
43
- of the list, and `moreai auth env` connects every one it finds. A More AI
44
- account is not required to use your own provider.
45
- - **More AI account** is optional and adds what needs a server: cloud
46
- sessions that keep working with this computer off (`moreai cloud`), session
47
- and settings sync, More AI dictation, and Google services (Gmail, Calendar,
48
- Drive) for the agent. Sign in with your email; approve the request on
49
- another signed-in device or enter the emailed six-digit code. The account
50
- session stays in the local engine, never in your shell history.
51
- - **External services** give the agent tools from a connector, such as an MCP
52
- server. `moreai connectors` lists the catalog whenever you want one.
53
-
54
- You can run these steps separately at any time:
35
+ > **Keep the `-g`.** The install box in npm's sidebar shows
36
+ > `npm i @moreai/code`, which only adds the package to the current folder — the
37
+ > `moreai` command appears only after a global install.
55
38
 
56
- ```sh
57
- moreai login # sign in to More AI
58
- moreai account # show the signed-in account and plan
59
- moreai logout # sign out; keeps your own provider connections
60
- moreai auth # connect or change an AI provider
61
- moreai auth env # connect the provider keys found in the environment
62
- moreai auth status # list connected providers
63
- moreai connectors # choose an external service
64
- moreai connectors list # list connected services
65
- moreai doctor # check the local engine and setup
66
- ```
39
+ Requires **Node.js 22 or newer** (`node --version`) on macOS, Linux or Windows.
40
+ Check the install with `moreai --version`. On Linux, if npm answers `EACCES`,
41
+ install Node with a version manager such as [nvm](https://github.com/nvm-sh/nvm)
42
+ or [fnm](https://github.com/Schniz/fnm) instead of using `sudo`.
67
43
 
68
- When a provider signs in through the browser and you are on a remote machine
69
- over SSH, the sign-in page cannot reach back to the terminal on its own. The
70
- wizard prints the `ssh -L` command that forwards the sign-in port, or you can
71
- paste an API key instead.
72
-
73
- ### External services from the terminal
74
-
75
- `moreai connectors` (or `/connectors` in a session) is one searchable list:
76
- what is connected — Google services from your More AI account (Gmail,
77
- Calendar, Meet, Tasks, Drive) and MCP servers alike, each with its state —
78
- then the whole catalog by category. Type to search, **Enter** connects (or
79
- fixes a connection that needs a new sign-in), **Space** turns a connected
80
- service on or off, **Ctrl+D** disconnects it (press twice). Google services
81
- belong to your More AI account, so a service connected on the desktop, the web
82
- or the phone is already on here. Choosing one while signed out explains why
83
- the account is needed and opens the sign-in right there; once you are in, the
84
- connection continues on its own. A service whose sign-in is kept with the
85
- account can also be connected on this computer only, without one. For a script or SSH
86
- session, use the commands directly:
44
+ ## Get started in three steps
45
+
46
+ ### 1. Open your project and connect a model
87
47
 
88
48
  ```sh
89
- moreai connectors catalog # show service names and IDs
90
- moreai connectors add github # connect a listed service
91
- moreai connectors add https://mcp.example.com/mcp # connect a custom MCP URL
92
- moreai connectors list # inspect connection IDs and status
93
- moreai connectors off ID # keep a service but take its tools away
94
- moreai connectors on ID # turn it back on
95
- moreai connectors remove ID # disconnect by the ID shown in the list
49
+ cd your-project
50
+ moreai
96
51
  ```
97
52
 
98
- For a service that needs a token, pipe it to `--token-stdin` so the secret does
99
- not appear in the command arguments or shell history:
53
+ The first launch asks how to reach a model. Pick a provider from the list (type
54
+ to search), then paste an API key, sign in with your subscription, or choose a
55
+ local model from Ollama or LM Studio. Keys stay on your machine.
100
56
 
101
- ```sh
102
- printf '%s\n' "$MCP_TOKEN" | moreai connectors add github --token-stdin
103
- ```
57
+ <p align="center">
58
+ <img alt="The first launch: a searchable list of AI providers — Anthropic, OpenAI, ChatGPT, Google Gemini, GitHub Copilot, OpenRouter and more" src="https://cdn.jsdelivr.net/npm/@moreai/code@0.1.0-beta.3/media/connect.webp" width="760">
59
+ </p>
60
+
61
+ Already have `ANTHROPIC_API_KEY`, `OPENAI_API_KEY` or another provider key in
62
+ your environment? It is offered at the top of the list.
63
+
64
+ ### 2. Say what you want done
104
65
 
105
- Some services open a browser to finish sign-in. `moreai connectors list` shows
106
- whether each connection is ready. `moreai auth` remains the command for the
107
- AI model that answers your questions.
66
+ Type the task as you would tell a colleague and press **Enter**. The line under
67
+ the prompt shows the access mode, the model and your branch.
108
68
 
109
- ### Sign in without an interactive terminal
69
+ <p align="center">
70
+ <img alt="A session in a project folder, with the task typed into the prompt" src="https://cdn.jsdelivr.net/npm/@moreai/code@0.1.0-beta.3/media/start.webp" width="760">
71
+ </p>
110
72
 
111
- Starting sign-in from a script or SSH session requires an email argument:
73
+ ### 3. Follow along and approve what matters
74
+
75
+ The agent shows every step: files it reads, each edit as a diff, commands and
76
+ their output. You choose how much it may do on its own. In `accept-edits`,
77
+ shown here, it edits files freely and stops before every command — allow it
78
+ once, for the session, always, or deny it. In `auto`, the default, it runs
79
+ what it can show is safe and declines the rest.
80
+
81
+ <p align="center">
82
+ <img alt="A permission card asking to run npm test, with the choices Allow once, Allow for this session, Always allow and Deny" src="https://cdn.jsdelivr.net/npm/@moreai/code@0.1.0-beta.3/media/approve.webp" width="760">
83
+ </p>
84
+
85
+ While it works you can keep typing to steer it, **Esc** interrupts, and
86
+ **Shift+Tab** switches the access mode (see *Access modes* below). `/help`
87
+ lists every command.
88
+
89
+ ## What it does
90
+
91
+ - **Works in your repository.** Reads and searches the code, edits files and
92
+ shows each change as a diff, runs commands and tests, keeps a checklist of
93
+ its own plan, and answers in plain language.
94
+ - **Runs on your models.** More than 30 providers: Anthropic, OpenAI, Google
95
+ Gemini, OpenRouter, DeepSeek, Groq, local models through Ollama or LM Studio,
96
+ any OpenAI-compatible endpoint, and ChatGPT or GitHub Copilot subscriptions.
97
+ Keys stay on your machine.
98
+ - **Asks before it acts.** Five access modes, from read-only planning to full
99
+ autonomy. Commands run in an OS sandbox where one is available, and risky
100
+ ones are held for you.
101
+ - **Splits big questions across helpers.** Parallel helper agents research
102
+ different parts of the codebase at once and report back.
103
+ - **Moves work to the cloud.** With a More AI account, a task can keep running
104
+ on our servers with your laptop closed and come back as a branch or a pull
105
+ request.
106
+ - **Listens.** `Ctrl+T` dictates into the prompt.
107
+ - **Speaks your language.** The interface is translated into 35 languages.
108
+
109
+ ## Everyday commands
112
110
 
113
111
  ```sh
114
- moreai login you@example.com
112
+ moreai # interactive session in this folder
113
+ moreai setup # guided setup: model, optional account and services
114
+ moreai auth # connect or change an AI provider
115
+ moreai auth env # connect every provider key found in your environment
116
+ moreai doctor # check that everything is ready
115
117
  ```
116
118
 
117
- If it sends an email code, pipe the **latest** six-digit code to the verification
118
- command. Piping keeps the code out of process arguments and shell history:
119
+ ## Access modes
120
+
121
+ | Mode | What the agent may do |
122
+ | --- | --- |
123
+ | `plan` | Read the code and propose a plan for you to approve; then it builds |
124
+ | `read-only` | Read and answer; never change anything |
125
+ | `accept-edits` | Edit files on its own; ask before running commands |
126
+ | `auto` *(default)* | Work on its own; anything it cannot show to be safe is declined |
127
+ | `full` | Run everything except a small set of destructive commands |
128
+
129
+ Pick one with **Shift+Tab** in a session or `--mode <mode>` on the command line.
130
+
131
+ ## Helper agents
132
+
133
+ <p align="center">
134
+ <img alt="Three parallel helper agents researching webhooks, each with its result, then the combined answer" src="https://cdn.jsdelivr.net/npm/@moreai/code@0.1.0-beta.3/media/helpers.webp" width="860">
135
+ </p>
136
+
137
+ For broad questions the agent can start several **helper agents** in
138
+ parallel. Each gets its own line — what it was asked, what it is doing now,
139
+ and when it finishes, its tool count, tokens and time with the first line of
140
+ its report. The run's token total shows how much of it went to helpers.
141
+ Helpers only read; the main agent makes the changes.
142
+
143
+ Start a task with `@explore`, `@scout` or `@general` to hand it to a helper
144
+ directly:
119
145
 
120
146
  ```sh
121
- printf '%s\n' "$MOREAI_EMAIL_CODE" | moreai login you@example.com --code-stdin
147
+ moreai "@explore how does the billing webhook verify signatures?"
122
148
  ```
123
149
 
124
- If it returns a push approval challenge, the command prints its ID. Approve the
125
- matching confirmation code on another device, then run:
150
+ ## Cloud sessions
151
+
152
+ With a More AI account (`moreai login`), a task can run in the cloud instead
153
+ of on this computer. You can follow it here, or answer it from the web app or
154
+ your phone.
126
155
 
127
156
  ```sh
128
- moreai login --challenge <id> --wait
157
+ moreai cloud run "add tests for the parser" # move this folder into a cloud session
158
+ moreai --cloud "add tests for the parser" # the same
159
+ moreai cloud # your cloud sessions and their state
160
+ moreai cloud open <id> # the conversation and its link
161
+ moreai cloud finish <id> # bring the work back again
129
162
  ```
130
163
 
131
- To use an email code instead, run `moreai login --challenge <id> --fallback`,
132
- then pipe the code as above. No account token is printed by these commands.
164
+ `moreai cloud run` uploads the folder as it is — your branch, commits and
165
+ uncommitted changes, never files that look like secrets or are over 25 MB —
166
+ and follows the task in the terminal. **Ctrl+C** stops following; the task
167
+ keeps running. When it finishes, the work comes back as a **new branch**
168
+ `more-ai/<topic>-<id>`, and your own branch and edits are never touched. In a
169
+ GitHub or GitLab repository it is pushed and a pull request is opened with
170
+ your own `gh` / `glab` login; `--finish push|branch|folder` chooses otherwise.
171
+ Inside a session, `/cloud` does the same.
133
172
 
134
- ## Work in a project
173
+ ## Scripts and pipes
135
174
 
136
175
  ```sh
137
- moreai # interactive session in the current folder
138
- moreai "fix the failing test" # open a session and run a task
139
- moreai -c # continue the latest session for this folder
140
- moreai sessions # list this folder's sessions
141
- moreai -p "add types" # run once, print the result, exit
176
+ moreai -p "summarise the open TODOs" # run once, print the answer, exit
142
177
  git diff | moreai -p "review this diff"
143
- moreai -p --json "…" # one JSON event per line
178
+ moreai -p --json "add types to utils.ts" # one JSON event per line
179
+ moreai -c # continue the newest session here
180
+ moreai sessions # this folder's sessions
144
181
  ```
145
182
 
146
183
  | Option | Meaning |
147
184
  | --- | --- |
148
- | `-p, --print` | Run once without the interactive UI |
149
- | `--json` | With `-p`, output machine-readable event lines |
185
+ | `-p, --print` | Run once without the interactive interface |
186
+ | `--json` | With `-p`: machine-readable events, one per line |
150
187
  | `-c, --continue` | Continue this folder's newest session |
151
188
  | `--session <id>` | Resume a specific session |
152
- | `-m, --model <id>` | Choose a model for this run |
153
- | `--provider <id>` | Disambiguate the provider for a model |
154
- | `--mode <mode>` | `plan`, `read-only`, `accept-edits`, `auto`, or `full` |
155
- | `-C, --cwd <dir>` | Set the working folder |
156
- | `--cloud` | Run the task in a cloud session instead (see below) |
189
+ | `-m, --model <id>` | Choose the model for this run |
190
+ | `--provider <id>` | Say which provider serves `--model` |
191
+ | `--mode <mode>` | Access mode (see above) |
192
+ | `-C, --cwd <dir>` | Work in another folder |
193
+ | `--cloud` | Run the task in a cloud session |
157
194
  | `--finish <how>` | With `--cloud`: `pr`, `push`, `branch` or `folder` |
158
- | `--detach` | With `--cloud`: start it and return without following |
195
+ | `--detach` | With `--cloud`: start it and return immediately |
196
+ | `--lang <id>` | Interface language for this run |
159
197
 
160
- In the session, press **Enter** to send, **Ctrl+J** (or a trailing `\`) for a
161
- newline, **Esc** to interrupt, and **Shift+Tab** to change access mode. Use
162
- `/help` to see the available commands. You can type while the agent is working
163
- to steer its run. The status line shows the model, how much of its context
164
- window is left (yellow under 25 %, red under 10 %), the branch and the access
165
- mode.
198
+ ## In the session
166
199
 
167
- While the agent works, what it reads and searches folds into one
168
- **Explored** line, edits show as diffs, and its checklist stays above the input.
200
+ | Key | Action |
201
+ | --- | --- |
202
+ | Enter | Send (or steer the running task) |
203
+ | Ctrl+J, or `\` at line end | New line |
204
+ | Esc | Interrupt the run; twice clears the draft |
205
+ | Shift+Tab | Change the access mode |
206
+ | Ctrl+T | Dictate (Enter or Ctrl+T to insert, Esc to discard) |
207
+ | ↑ ↓ | Move between lines, then through your history |
208
+ | Ctrl+O | Expand a large paste back into editable text |
209
+ | Ctrl+D, or Ctrl+C twice | Leave; the command to resume is printed |
169
210
 
170
- ### Helper agents
211
+ Useful commands: `/model` (pick a model; **Ctrl+F** pins it), `/sessions`,
212
+ `/connectors` (Gmail, Calendar, Drive, GitHub and other services for the
213
+ agent), `/cloud`, `/language`, `/login`, `/status`, `/help`.
171
214
 
172
- The agent can split broad research across parallel **helper agents**. Each one
173
- gets its own line under the step that started it — what it was asked, what it
174
- is doing now, and when it finishes, its tool count, tokens and time with the
175
- first line of its report. The run's token total says how much of it the helpers
176
- spent. Helpers only read; the main agent makes the changes.
215
+ ## Voice input
177
216
 
178
- Start a task with `@explore`, `@scout` or `@general` to hand it to that helper
179
- directly, even when automatic delegation is off:
217
+ **Ctrl+T** (or `/voice`) records from the microphone and puts the text at the
218
+ cursor without sending it. Transcription uses More AI dictation once you sign
219
+ in, your own transcription service, or an on-device model set up in the More
220
+ AI desktop app. Recording uses the ffmpeg that comes with the desktop app, or
221
+ `ffmpeg`, `sox`, `parecord` or `arecord` from your `PATH`.
180
222
 
181
- ```sh
182
- moreai "@explore how does the billing webhook verify signatures?"
183
- ```
223
+ ## Account and services
184
224
 
185
- ### Voice input
186
-
187
- **Ctrl+T** (or `/voice`) records from the microphone: a red dot, a timer and a
188
- level meter show it is listening. **Enter** or **Ctrl+T** stops and puts the
189
- text at the cursor — it is not sent, so you can read it first — and **Esc**
190
- throws the recording away. A recording stops by itself after two minutes.
191
-
192
- Transcription uses whatever the More AI app's dictation is set to: More AI
193
- dictation once you `/login`, your own transcription service, or an on-device
194
- model (Settings → Dictation in the app). The audio is recorded by this terminal,
195
- so the first time the system asks whether your terminal app may use the
196
- microphone. If a transcription fails, the recording is kept: **Ctrl+T** tries
197
- again.
198
-
199
- To record, `moreai` uses the ffmpeg that comes with the More AI app, or one of
200
- `ffmpeg`, `sox`, `parecord`, `arecord` on your PATH. `MOREAI_VOICE_RECORDER`
201
- names any other command that prints raw 16-bit 16 kHz mono audio on stdout
202
- (arguments separated by spaces).
203
-
204
- ### Leaving a session
205
-
206
- **Ctrl+D** on an empty draft, **Ctrl+C** twice or `/quit` ends the session and
207
- hands the terminal back: the screen is cleared and one line remains with the
208
- command that resumes the session. Only the visible screen is cleared — what you
209
- ran before `moreai` stays in the scrollback — and the terminal gets its own
210
- title back. `MOREAI_KEEP_SCREEN=1` leaves the session on screen instead. A
211
- crash never clears the screen, so the error stays readable.
212
-
213
- ### Choosing a model
214
-
215
- `/model` (or `/models`) opens the model picker: the current model, the models
216
- you pinned (shared with the desktop app's picker), your recent picks, then every
217
- connected provider — a large catalog such as OpenRouter grouped by vendor, with
218
- the context window and price where the provider reports them.
219
-
220
- - **Type** to search model names, providers and vendors (`sonnet`,
221
- `or claude` for OpenRouter's Claude models, `anthropic`).
222
- - **↑ ↓** move, **PgUp PgDn** page, **← →** switch the provider tab.
223
- - **Enter** uses the model for this session and remembers it as your latest
224
- pick, so a new session — here or in the desktop app — starts on it.
225
- - **Ctrl+F** pins or unpins a model; **Ctrl+A** connects another provider;
226
- **Esc** clears the search, then closes.
227
-
228
- `/model <text>` switches immediately when the text names exactly one model
229
- (`/model glm-4.5`, `/model openrouter/anthropic/claude-sonnet-4.6`); anything
230
- else opens the picker with that search.
231
-
232
- ### Editing and pasting
233
-
234
- The input box is a multi-line editor: **↑ ↓** move between lines (and reach your
235
- history from the first or last line of an empty or recalled draft),
236
- **Alt+← →** move by word, **Ctrl+A / Ctrl+E** jump to the line start or end,
237
- **Ctrl+U / Ctrl+K / Ctrl+W** delete. A long draft scrolls inside the box.
238
-
239
- A large paste (more than 8 lines or 800 characters) becomes a single
240
- `[Pasted text #1 · 200 lines]` item: **Backspace** removes it whole,
241
- **Ctrl+O** turns it back into editable text, and the agent receives the full
242
- text when you send. **Ctrl+C** clears the draft and keeps it in history; **Esc**
243
- twice clears it too.
244
-
245
- ### Language
246
-
247
- The terminal agent speaks the same 35 languages as the desktop app and picks
248
- one without asking: `--lang` or `MOREAI_LANG` first, then your `/language`
249
- choice, then the desktop app's language, then the terminal's locale
250
- (`LC_ALL` / `LANG`) and finally the system language. `/language` lists them all
251
- (type to search; **Automatic** follows the app and the system), and
252
- `/language de` switches straight away. Slash commands, flags and key names stay
253
- in English everywhere, and `--json` output is always English.
225
+ A More AI account is optional. It adds cloud sessions, sync of your sessions to
226
+ the web and phone apps, More AI dictation, and Google services (Gmail,
227
+ Calendar, Drive) for the agent.
254
228
 
255
229
  ```sh
256
- moreai --lang ja # this run only
257
- MOREAI_LANG=ru moreai # the same, from the environment
230
+ moreai login # sign in with your email (a code or an approval on another device)
231
+ moreai account # the signed-in account and plan
232
+ moreai connectors # connect a service; `moreai connectors list` shows them
233
+ moreai logout # sign out; your own provider keys stay
258
234
  ```
259
235
 
260
- ## Cloud sessions
236
+ From a script or an SSH session: `moreai login you@example.com`, then pipe the
237
+ emailed code to `moreai login you@example.com --code-stdin`. When a provider
238
+ signs in through the browser on a remote machine, the CLI prints the
239
+ `ssh -L` command that forwards the sign-in back to your terminal.
240
+
241
+ ## How it runs
242
+
243
+ `moreai` starts a small background engine on your machine the first time it
244
+ needs one; later sessions, the More AI desktop app and the VS Code extension
245
+ share it, so a session started in one place continues in another. If the
246
+ desktop app is running with **Settings → Agent tools → External clients** on,
247
+ the CLI uses the app's engine instead.
261
248
 
262
- With a More AI account, a task can run in the cloud instead of on this
263
- computer — it keeps going when you close the laptop, and you can follow it or
264
- answer it from the web app or your phone.
249
+ Provider keys are encrypted with a key kept in the system keyring (macOS
250
+ Keychain, Windows Credential Manager, or the Secret Service on Linux). A Linux
251
+ server without a keyring service stores them in a file only your user can read
252
+ (`~/.config/More AI/secrets.json`), the way most command-line tools keep tokens.
253
+
254
+ ## Privacy
255
+
256
+ Your code and keys stay on your machine unless you move a task to the cloud.
257
+ More AI collects usage analytics to find bugs; with AI traces on (the default)
258
+ the content of runs is included so failed runs can be debugged. API keys are
259
+ never sent. The first interactive session asks once; change it any time:
265
260
 
266
261
  ```sh
267
- moreai cloud run "add tests for the parser" # move this folder into a cloud session
268
- moreai --cloud "add tests for the parser" # the same
269
- moreai cloud # your cloud sessions and their state
270
- moreai cloud open <id> # the conversation and its link
271
- moreai cloud finish <id> # bring the work back again
272
- moreai cloud cancel <id> # stop the running task
273
- moreai cloud models # models a cloud run can use
262
+ moreai analytics off # nothing is sent
263
+ moreai analytics usage # usage only, no conversation content
264
+ moreai analytics on # usage and AI traces
274
265
  ```
275
266
 
276
- `moreai cloud run` packages the folder as it is — your branch, commits and
277
- uncommitted changes, never files that look like secrets or are larger than
278
- 25 MB — uploads it and starts the task, then follows it in the terminal: the
279
- current step, the answer when it is done. **Ctrl+C** stops following; the task
280
- keeps running (`--detach` returns straight away).
281
-
282
- When the task finishes, the work comes back on its own as a **new branch**
283
- `more-ai/<topic>-<id>`; your own branch and uncommitted edits are never
284
- touched. In a repository on GitHub or GitLab it is then pushed and a pull
285
- request is opened with your own `gh` / `glab` login; `--finish` chooses
286
- otherwise: `push`, `branch` (local only) or `folder` (copy the changed files
287
- into this folder, keeping your edits). The cloud runs on your plan's models,
288
- or on your own provider key if you uploaded it in the More AI app
289
- (Settings → Privacy); `-m` picks one of `moreai cloud models`.
290
-
291
- Inside a session, `/cloud` lists the cloud sessions (Enter shows one) and
292
- `/cloud <task>` moves the task there.
293
-
294
- ## Engine and data
295
-
296
- `moreai doctor` and `/status` name the backend this build talks to. Installed
297
- packages use production (`api.more-ai.net`); only `MOREAI_ENV=dev`, at build or
298
- run time, points the CLI and its engine at the test tier, and the session's
299
- welcome screen then shows a `DEV` badge.
300
-
301
-
302
- Without the desktop app, `moreai` launches a bundled headless engine on this
303
- machine. Provider credentials are encrypted with a key kept in the operating
304
- system's keyring (macOS Keychain, Windows Credential Manager, or the Secret
305
- Service on Linux — GNOME Keyring or KWallet). A Linux server with no keyring
306
- service stores them unencrypted in a file only your user can read
307
- (`~/.config/More AI/secrets.json`), the way most command-line tools keep
308
- tokens. The CLI and VS Code can connect to the same running engine; sessions
309
- and settings persist across CLI restarts.
310
-
311
- If the desktop app is running with **External clients** enabled, the CLI attaches
312
- to its engine, so sessions appear on both surfaces. If the app is running with
313
- External clients disabled, enable it in **Settings → Agent tools**, or close the
314
- app so the CLI can start its own engine. `moreai doctor` reports this condition.
315
-
316
- ## Usage analytics
317
-
318
- More AI collects usage analytics to find bugs and see which features work:
319
- commands you use, errors, and how agent runs go. With AI traces on (the
320
- default), the content of runs is included too, so failed runs can be debugged.
321
- API keys are never sent. The first interactive session asks once; you can
322
- change it at any time:
267
+ `DO_NOT_TRACK=1` or `MOREAI_TELEMETRY=0` turns analytics off for any process
268
+ that sees it.
269
+
270
+ ## Update and uninstall
323
271
 
324
272
  ```sh
325
- moreai analytics # show the current setting
326
- moreai analytics usage # analytics without conversation content
327
- moreai analytics off # turn analytics off
328
- moreai analytics on # analytics and AI traces
273
+ moreai update # is there a newer version?
274
+ moreai update --install # install it
275
+ npm uninstall -g @moreai/code
329
276
  ```
330
277
 
331
- Inside a session, `/analytics` opens the same choice. `DO_NOT_TRACK=1` or
332
- `MOREAI_TELEMETRY=0` turns analytics off for any process that sees it. The
333
- setting belongs to this machine's engine, so it is shared with the More AI
334
- desktop app (Settings → Privacy) when both are installed.
278
+ The background engine notices an update or uninstall and stops by itself once
279
+ nothing is using it, so the next session runs the new version.
280
+
281
+ Version 0.1.0-beta.1 cannot see newer versions: update it once with
282
+ `npm install -g @moreai/code@latest`. Its engine predates the self-stop and
283
+ keeps running until you restart the computer or run
284
+ `pkill -f @moreai/code/dist/daemon.mjs` (macOS, Linux).
285
+
286
+ ## Troubleshooting
287
+
288
+ - **`moreai doctor`** checks the engine, the connection and your setup, and says
289
+ what to fix.
290
+ - **"No AI provider is connected"**: run `moreai auth`, or `moreai auth env` if
291
+ your key is in an environment variable.
292
+ - **The desktop app is running but the CLI cannot attach**: turn on
293
+ **Settings → Agent tools → External clients** in the app, or close the app.
294
+ - **Commands are held on a Linux server**: in `auto` the agent runs commands
295
+ on its own only inside a sandbox (bubblewrap on Linux). Without one, switch to
296
+ `accept-edits` (**Shift+Tab**) to approve each command, or use `--mode full`
297
+ in an environment you trust.
298
+
299
+ Questions and bug reports: [support@more-ai.net](mailto:support@more-ai.net).
300
+
301
+ ## License
335
302
 
336
- © 2026 More AI. All rights reserved. Proprietary software — see `LICENSE`;
337
- the open-source components it bundles are listed in `THIRD_PARTY_LICENSES.txt`.
303
+ © 2026 More AI. All rights reserved. Proprietary software — see `LICENSE`.
304
+ The open-source components it bundles are listed in `THIRD_PARTY_LICENSES.txt`.