@rizom/ops 0.2.0-alpha.22 → 0.2.0-alpha.221
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 +3 -1
- package/dist/brains-ops.js +229 -283
- package/dist/cert-bootstrap.d.ts +3 -1
- package/dist/content-repo-ref.d.ts +10 -0
- package/dist/content-repo.d.ts +1 -0
- package/dist/deploy.js +99 -166
- package/dist/entries/deploy.d.ts +3 -2
- package/dist/images.d.ts +76 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +268 -281
- package/dist/load-registry.d.ts +25 -2
- package/dist/observed-status.d.ts +1 -1
- package/dist/origin-ca.d.ts +1 -1
- package/dist/parse-args.d.ts +3 -0
- package/dist/preview-domain.d.ts +9 -0
- package/dist/push-secrets.d.ts +2 -9
- package/dist/push-target.d.ts +1 -2
- package/dist/run-command.d.ts +1 -1
- package/dist/run-subprocess.d.ts +1 -6
- package/dist/schema.d.ts +64 -155
- package/dist/secrets-encrypt.d.ts +5 -13
- package/dist/ssh-key-bootstrap.d.ts +1 -26
- package/dist/user-add.d.ts +15 -0
- package/dist/verify-user.d.ts +19 -0
- package/package.json +45 -42
- package/templates/rover-pilot/.env.schema +17 -3
- package/templates/rover-pilot/.github/workflows/build.yml +64 -17
- package/templates/rover-pilot/.github/workflows/deploy.yml +128 -61
- package/templates/rover-pilot/.github/workflows/reconcile.yml +21 -1
- package/templates/rover-pilot/README.md +5 -3
- package/templates/rover-pilot/deploy/scripts/decrypt-user-secrets.ts +78 -24
- package/templates/rover-pilot/deploy/scripts/helpers.ts +3 -0
- package/templates/rover-pilot/deploy/scripts/resolve-deploy-handles.ts +12 -3
- package/templates/rover-pilot/deploy/scripts/resolve-missing-images.ts +13 -0
- package/templates/rover-pilot/deploy/scripts/resolve-user-config.ts +44 -9
- package/templates/rover-pilot/deploy/scripts/sync-content-repo.ts +51 -47
- package/templates/rover-pilot/deploy/scripts/update-dns.ts +14 -4
- package/templates/rover-pilot/deploy/scripts/validate-secrets.ts +1 -1
- package/templates/rover-pilot/docs/onboarding-checklist.md +33 -13
- package/templates/rover-pilot/docs/operator-playbook.md +183 -10
- package/templates/rover-pilot/docs/user-onboarding.md +67 -332
- package/templates/rover-pilot/pilot.yaml +1 -1
- package/templates/rover-pilot/.kamal/hooks/pre-deploy +0 -9
- package/templates/rover-pilot/deploy/Dockerfile +0 -30
- package/templates/rover-pilot/deploy/kamal/deploy.yml +0 -40
|
@@ -1,384 +1,119 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Welcome to Rover
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
---
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Most of us have more thinking happening than we can hold onto. Ideas show up in the wrong moment, notes land in five different places, and half of what you've figured out is effectively invisible by the time you need it again.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Rover is your private AI assistant for working with your own notes, links, and ideas.
|
|
10
|
-
|
|
11
|
-
In this pilot, Rover is intentionally simple:
|
|
12
|
-
|
|
13
|
-
- you will usually talk to it in **Discord**
|
|
14
|
-
- **there is no website to browse**
|
|
15
|
-
- **MCP is optional** and only needed for direct client access or specific testing workflows
|
|
16
|
-
- your content can also live in a normal git repo of markdown/text files; **Obsidian is optional** if you want a nicer note-editing interface
|
|
17
|
-
|
|
18
|
-
You can think of Rover as a private knowledge companion that helps you:
|
|
19
|
-
|
|
20
|
-
- save notes
|
|
21
|
-
- save links
|
|
22
|
-
- reflect on your own material
|
|
23
|
-
- find patterns in what you have collected
|
|
24
|
-
- think through questions with AI
|
|
25
|
-
|
|
26
|
-
## What you will receive from us
|
|
27
|
-
|
|
28
|
-
We will send you the details you need to get started.
|
|
29
|
-
|
|
30
|
-
That usually includes:
|
|
31
|
-
|
|
32
|
-
- confirmation that Discord is enabled for you, plus the invite/setup steps
|
|
33
|
-
- if needed, your Rover MCP URL: `https://<handle>.rizom.ai/mcp`
|
|
34
|
-
- if needed, your **Bearer token**
|
|
35
|
-
- if needed, an invite to your **private** Rover content repo
|
|
36
|
-
- any extra instructions if we are testing a specific workflow with your cohort
|
|
37
|
-
|
|
38
|
-
If we give you a **Bearer token**, treat it like a password. Do not share it.
|
|
39
|
-
|
|
40
|
-
## One important idea: Discord is the default, MCP is optional
|
|
41
|
-
|
|
42
|
-
If you are new to Rover, the shortest explanation is:
|
|
43
|
-
|
|
44
|
-
- **Rover** is the assistant
|
|
45
|
-
- **Discord** is the default way most pilot users will talk to it
|
|
46
|
-
- **MCP** is an optional direct connection method for supported AI clients
|
|
47
|
-
|
|
48
|
-
You do not need to understand the protocol details unless we specifically ask you to use MCP.
|
|
49
|
-
|
|
50
|
-
For most users, the practical meaning is simple:
|
|
51
|
-
|
|
52
|
-
- join Discord
|
|
53
|
-
- message Rover there
|
|
54
|
-
- start using it
|
|
55
|
-
|
|
56
|
-
If your cohort is also testing MCP, we will send the URL, Bearer token, and setup help separately.
|
|
57
|
-
|
|
58
|
-
## What to use first
|
|
59
|
-
|
|
60
|
-
For most users, the easiest first setup is:
|
|
61
|
-
|
|
62
|
-
- **Discord** for talking to Rover
|
|
63
|
-
- a normal **git repo of markdown/text files** only if you also want to work directly with your content later
|
|
64
|
-
- **Obsidian** only if you want a friendlier interface for those same files
|
|
65
|
-
- **Claude Desktop** or another MCP client only if we explicitly ask you to test a direct MCP workflow
|
|
66
|
-
|
|
67
|
-
## Default setup: Discord
|
|
68
|
-
|
|
69
|
-
For most users, getting started means:
|
|
70
|
-
|
|
71
|
-
- join the Discord server we send you
|
|
72
|
-
- open the Rover channel or DM
|
|
73
|
-
- send a first message
|
|
74
|
-
|
|
75
|
-
Try a first message like:
|
|
76
|
-
|
|
77
|
-
> What can you help me do, and what should I use you for?
|
|
78
|
-
|
|
79
|
-
Or:
|
|
80
|
-
|
|
81
|
-
> Help me save my first note.
|
|
82
|
-
|
|
83
|
-
If Discord is not enabled for you yet, tell us and we will share the right next step.
|
|
84
|
-
|
|
85
|
-
## Optional: direct MCP access
|
|
86
|
-
|
|
87
|
-
If we have asked you to use an MCP client, use one that supports:
|
|
88
|
-
|
|
89
|
-
- **HTTP / Streamable HTTP MCP**
|
|
90
|
-
- **Bearer token authentication**
|
|
91
|
-
|
|
92
|
-
When your client asks for connection details, use:
|
|
93
|
-
|
|
94
|
-
- **Server URL:** `https://<handle>.rizom.ai/mcp`
|
|
95
|
-
- **Authentication type:** Bearer token
|
|
96
|
-
- **Bearer token:** the token we sent you
|
|
97
|
-
|
|
98
|
-
If the client asks for a name, use something simple like:
|
|
99
|
-
|
|
100
|
-
- `Rover (<handle>)`
|
|
101
|
-
|
|
102
|
-
## Optional: Claude Desktop setup
|
|
103
|
-
|
|
104
|
-
If we ask you to connect through Claude Desktop and your version supports a **remote HTTP / Streamable HTTP MCP server**, enter:
|
|
105
|
-
|
|
106
|
-
- **Server URL:** `https://<handle>.rizom.ai/mcp`
|
|
107
|
-
- **Authentication:** Bearer token
|
|
108
|
-
- **Token:** the token we sent you
|
|
109
|
-
|
|
110
|
-
Then try a first message like:
|
|
111
|
-
|
|
112
|
-
> What can you help me do, and what should I use you for?
|
|
113
|
-
|
|
114
|
-
Or:
|
|
115
|
-
|
|
116
|
-
> Help me save my first note.
|
|
117
|
-
|
|
118
|
-
If your Claude Desktop version only supports local MCP servers and not remote HTTP MCP cleanly, tell us what version you are using and we will help you.
|
|
119
|
-
|
|
120
|
-
## Your first 5 minutes
|
|
121
|
-
|
|
122
|
-
Once you are connected, try this sequence:
|
|
123
|
-
|
|
124
|
-
### 1. Check that Rover responds
|
|
125
|
-
|
|
126
|
-
Ask:
|
|
127
|
-
|
|
128
|
-
> What can you help me do?
|
|
129
|
-
|
|
130
|
-
### 2. Save a first note
|
|
131
|
-
|
|
132
|
-
Ask:
|
|
7
|
+
Rover is built for that problem. It's a private space where your thinking accumulates — notes, links, fragments, half-formed ideas — and an AI that can work with all of it. Find things you saved months ago. Connect dots across topics. Turn a rough note into a draft. The more you put in, the more useful it gets. And if another Rover user is in your network, your Rovers can talk to each other — share knowledge, work on something together — just by asking.
|
|
133
8
|
|
|
134
|
-
|
|
9
|
+
---
|
|
135
10
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
Ask:
|
|
139
|
-
|
|
140
|
-
> Save this link and note why it matters to me: <paste URL>
|
|
141
|
-
|
|
142
|
-
### 4. Ask Rover to reflect back what it knows
|
|
143
|
-
|
|
144
|
-
Ask:
|
|
145
|
-
|
|
146
|
-
> Based on what I’ve stored so far, what themes are starting to emerge?
|
|
147
|
-
|
|
148
|
-
### 5. Use it as a thinking partner
|
|
149
|
-
|
|
150
|
-
Ask:
|
|
151
|
-
|
|
152
|
-
> I am thinking through a problem in my work. Help me structure the question and identify what context is missing.
|
|
153
|
-
|
|
154
|
-
## Wishlist: when Rover cannot do something yet
|
|
155
|
-
|
|
156
|
-
Rover has a built-in **wishlist**.
|
|
157
|
-
|
|
158
|
-
This is important for first-time users because Rover will not be able to do everything yet.
|
|
159
|
-
|
|
160
|
-
If you ask for something Rover cannot do, it should add that request to the wishlist instead of just failing silently.
|
|
161
|
-
|
|
162
|
-
You can think of the wishlist as:
|
|
163
|
-
|
|
164
|
-
- a backlog of missing capabilities
|
|
165
|
-
- a record of things users want Rover to do
|
|
166
|
-
- a way for the pilot team to see which missing features matter most
|
|
167
|
-
|
|
168
|
-
### When the wishlist is useful
|
|
169
|
-
|
|
170
|
-
The wishlist is especially useful when you ask Rover to do something like:
|
|
171
|
-
|
|
172
|
-
- connect to a tool it does not support yet
|
|
173
|
-
- perform an action it cannot perform yet
|
|
174
|
-
- add a workflow or feature that does not exist yet
|
|
175
|
-
|
|
176
|
-
Examples:
|
|
177
|
-
|
|
178
|
-
> I want Rover to draft and send emails for me.
|
|
179
|
-
|
|
180
|
-
> I want Rover to connect to my calendar.
|
|
181
|
-
|
|
182
|
-
> I want Rover to summarize voice notes automatically.
|
|
183
|
-
|
|
184
|
-
If Rover cannot actually do those things yet, it should tell you that and add the request to the wishlist.
|
|
185
|
-
|
|
186
|
-
### What happens when something is added to the wishlist
|
|
187
|
-
|
|
188
|
-
When a request is added to the wishlist:
|
|
189
|
-
|
|
190
|
-
- it is saved as a **wish**
|
|
191
|
-
- it starts in a **new** state
|
|
192
|
-
- similar requests can be grouped together instead of creating endless duplicates
|
|
193
|
-
- repeated demand can increase the count of how many times that wish was requested
|
|
194
|
-
|
|
195
|
-
That helps us see which gaps are one-off ideas and which ones keep coming up across real usage.
|
|
196
|
-
|
|
197
|
-
### How you should use it
|
|
198
|
-
|
|
199
|
-
You do **not** need special commands.
|
|
200
|
-
|
|
201
|
-
Just ask naturally.
|
|
202
|
-
|
|
203
|
-
If Rover cannot do what you asked, a good response from Rover is something like:
|
|
204
|
-
|
|
205
|
-
- it explains the limitation clearly
|
|
206
|
-
- it says the request was added to the wishlist
|
|
207
|
-
|
|
208
|
-
If that does **not** happen, that is useful feedback for us too.
|
|
209
|
-
|
|
210
|
-
## Git, text files, and Obsidian
|
|
211
|
-
|
|
212
|
-
The underlying content workflow is a normal **git repo** with normal **markdown/text files**.
|
|
213
|
-
|
|
214
|
-
Obsidian is optional. It is just one possible editor for those files.
|
|
215
|
-
|
|
216
|
-
That means:
|
|
217
|
-
|
|
218
|
-
- use **Discord** as the main way to talk to Rover
|
|
219
|
-
- use a normal editor plus **git** if you want to browse, draft, and edit your files directly
|
|
220
|
-
- use **Obsidian** only if you want a more note-focused interface for the same files
|
|
221
|
-
- Rover can pick up those file changes through the normal git-sync / directory-sync flow
|
|
222
|
-
|
|
223
|
-
A simple mental model:
|
|
224
|
-
|
|
225
|
-
- **Discord** = talk to Rover
|
|
226
|
-
- **git repo + text files** = the underlying content
|
|
227
|
-
- **Obsidian** = an optional editor for that content
|
|
228
|
-
|
|
229
|
-
### Important: your content repo is private
|
|
230
|
-
|
|
231
|
-
If you use the git/text-file workflow, you will be working in your own **private** GitHub repo.
|
|
232
|
-
|
|
233
|
-
That means:
|
|
234
|
-
|
|
235
|
-
- you do **not** need repo access just to use Rover in Discord or through MCP
|
|
236
|
-
- you **do** need GitHub access if you want to clone, edit, and push to your content repo
|
|
237
|
-
- we will invite you only to **your own** content repo, not to the operator repo and not to other users' repos
|
|
238
|
-
|
|
239
|
-
### How you get access
|
|
240
|
-
|
|
241
|
-
If you want the git/text-file workflow, we will:
|
|
242
|
-
|
|
243
|
-
1. create or confirm your private content repo
|
|
244
|
-
2. invite your GitHub account to that repo
|
|
245
|
-
3. ask you to accept the GitHub invite
|
|
246
|
-
4. send you the repo URL
|
|
247
|
-
|
|
248
|
-
### Easiest setup for most users
|
|
249
|
-
|
|
250
|
-
The easiest path for most first-time users is:
|
|
11
|
+
## What Rover is
|
|
251
12
|
|
|
252
|
-
|
|
253
|
-
2. accept the repo invite in GitHub
|
|
254
|
-
3. clone the private repo with GitHub Desktop
|
|
255
|
-
4. open the cloned folder in your normal editor and edit the markdown/text files directly
|
|
256
|
-
5. optionally open that same folder as an **Obsidian** vault if you prefer
|
|
257
|
-
6. commit and push your changes
|
|
13
|
+
Rover is your private knowledge companion. It holds your notes, links, and ideas — and helps you think with them, not just store them.
|
|
258
14
|
|
|
259
|
-
|
|
15
|
+
Ask it a question and it searches what you've saved. Give it a fragment of thinking and it can help you turn it into something.
|
|
260
16
|
|
|
261
|
-
|
|
17
|
+
---
|
|
262
18
|
|
|
263
|
-
|
|
19
|
+
## Getting in
|
|
264
20
|
|
|
265
|
-
|
|
266
|
-
2. **SSH key** if you already use git that way
|
|
267
|
-
3. a **fine-grained personal access token** only if another tool specifically requires it
|
|
21
|
+
We'll send you a personal URL — something like `https://<handle>.rizom.ai/`.
|
|
268
22
|
|
|
269
|
-
|
|
23
|
+
When you open it for the first time, you'll be asked to set a passkey. Do that once and you're in. No passwords to remember.
|
|
270
24
|
|
|
271
|
-
|
|
25
|
+
From there, your three main interfaces are:
|
|
272
26
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
4. edit or organize your notes there
|
|
277
|
-
5. commit and push your changes through normal git, GitHub Desktop, or the Obsidian Git plugin
|
|
278
|
-
6. let the normal git-sync flow carry those changes into Rover
|
|
27
|
+
- **Chat** (`/chat`) — where you talk to Rover
|
|
28
|
+
- **Dashboard** (`/`) — an overview of your Rover
|
|
29
|
+
- **CMS** (`/cms`) — a browser editor for your content
|
|
279
30
|
|
|
280
|
-
|
|
31
|
+
Start with Chat. Everything else follows from there.
|
|
281
32
|
|
|
282
|
-
|
|
33
|
+
---
|
|
283
34
|
|
|
284
|
-
|
|
35
|
+
## Your first five minutes
|
|
285
36
|
|
|
286
|
-
|
|
37
|
+
1. Open your Chat URL. A good first message:
|
|
38
|
+
> Help me save my first note.
|
|
39
|
+
2. Save something — a thought, a link, an idea. Doesn't need to be polished.
|
|
40
|
+
3. Ask Rover about it. See what comes back.
|
|
287
41
|
|
|
288
|
-
|
|
289
|
-
- drop in links to save
|
|
290
|
-
- ask short or long questions
|
|
291
|
-
- use Rover day to day without setting up a separate client
|
|
42
|
+
That loop — save, ask, get something useful back — is the core of how Rover works.
|
|
292
43
|
|
|
293
|
-
|
|
44
|
+
---
|
|
294
45
|
|
|
295
|
-
|
|
296
|
-
- MCP is **optional**
|
|
297
|
-
- if Discord is enabled, we will send the exact invite/setup steps separately
|
|
298
|
-
- for some pilot setups, Discord-enabled users may need to supply their own bot token
|
|
46
|
+
## The Chat and the CMS: when to use which
|
|
299
47
|
|
|
300
|
-
|
|
48
|
+
**Chat** is for thinking out loud, asking questions, saving things quickly, and using Rover as a day-to-day thinking partner.
|
|
301
49
|
|
|
302
|
-
|
|
50
|
+
**CMS** is for when you want to deliberately create or edit content — browsing your notes, making clean edits, working more like an editor than a conversationalist.
|
|
303
51
|
|
|
304
|
-
|
|
52
|
+
Most people spend most of their time in Chat. The CMS becomes useful once you have something worth editing.
|
|
305
53
|
|
|
306
|
-
|
|
54
|
+
---
|
|
307
55
|
|
|
308
|
-
|
|
309
|
-
- a setup process that may still be a bit manual
|
|
310
|
-
- a Rover that becomes more useful as you add more notes and links
|
|
311
|
-
- occasional follow-up questions from us about your experience
|
|
312
|
-
- improvements and changes during the pilot
|
|
56
|
+
## Other ways to chat with Rover
|
|
313
57
|
|
|
314
|
-
|
|
58
|
+
`/chat` is the primary interface, but Rover can also be reached through messaging platforms. Discord is tested and working. Slack, WhatsApp Business, and similar should work out of the box — we'll send setup steps if that's part of your configuration.
|
|
315
59
|
|
|
316
|
-
|
|
60
|
+
**Talking to another Rover**
|
|
317
61
|
|
|
318
|
-
|
|
62
|
+
If you know another Rover user, you can add them to your contacts and call their Rover directly from your chat.
|
|
319
63
|
|
|
320
|
-
-
|
|
321
|
-
-
|
|
322
|
-
|
|
64
|
+
- To add: _Add jane.rizom.ai to my contacts._
|
|
65
|
+
- To call: _Call jane.rizom.ai and ask [your question]._
|
|
66
|
+
You'll need their address — in the format `name.rizom.ai` — which they can share with you directly.
|
|
323
67
|
|
|
324
|
-
|
|
68
|
+
---
|
|
325
69
|
|
|
326
|
-
##
|
|
70
|
+
## Connecting Rover to other tools
|
|
327
71
|
|
|
328
|
-
|
|
72
|
+
Rover can connect to external tools via MCP — a standard protocol that works in two directions: agentic AI clients (like Claude Desktop) can use it to talk to Rover, and Rover can use it to talk to productivity tools like Notion or Linear.
|
|
329
73
|
|
|
330
|
-
|
|
74
|
+
Plugins exist for a number of tools already, and new ones can be built quickly in response to what you actually need. If there's a tool you'd want Rover to connect to, tell us.
|
|
331
75
|
|
|
332
|
-
|
|
76
|
+
If MCP is part of your setup, we'll send specific instructions alongside your URL.
|
|
333
77
|
|
|
334
|
-
|
|
78
|
+
---
|
|
335
79
|
|
|
336
|
-
|
|
337
|
-
- the Bearer token was pasted incorrectly
|
|
338
|
-
- the client is using the wrong authentication type
|
|
80
|
+
## A few common questions
|
|
339
81
|
|
|
340
|
-
|
|
82
|
+
**How do I access my data?**
|
|
83
|
+
Your primary interface is the CMS (`/cms`), where you can browse and edit everything you've saved. If you're set up with GitHub access, your content also lives in a private repository you can access directly.
|
|
341
84
|
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
- token: exactly the token we sent you
|
|
85
|
+
**Does Rover connect to the internet?**
|
|
86
|
+
No — and that's intentional. Rover works with what you've put into it, not with whatever the internet currently says. That means its answers are grounded in your actual knowledge base, not in generic search results.
|
|
345
87
|
|
|
346
|
-
|
|
88
|
+
**What does this cost?**
|
|
89
|
+
Nothing during the pilot. We cover hosting costs while you're part of the programme.
|
|
347
90
|
|
|
348
|
-
|
|
91
|
+
---
|
|
349
92
|
|
|
350
|
-
|
|
93
|
+
## This is a pilot
|
|
351
94
|
|
|
352
|
-
|
|
353
|
-
- the version you are using
|
|
354
|
-
- the exact error message
|
|
355
|
-
- a screenshot if possible
|
|
95
|
+
Rover works. But it's not finished.
|
|
356
96
|
|
|
357
|
-
|
|
97
|
+
You'll hit rough edges. Some things you try won't work. Some things you expect to be there won't be yet. That's normal — and it's actually why you're here.
|
|
358
98
|
|
|
359
|
-
We
|
|
99
|
+
There's a ceiling on how much Rover can improve without real people using it on real problems. We've reached that ceiling on our own. Your usage is what lets the product become what it's capable of becoming. A single Rover in isolation can only do so much — the network only becomes real when there are enough active, populated Rovers in it.
|
|
360
100
|
|
|
361
|
-
-
|
|
362
|
-
- what felt useful immediately
|
|
363
|
-
- what felt weak, awkward, or unclear
|
|
364
|
-
- what you expected Rover to do but could not get it to do
|
|
365
|
-
- whether you would keep using it after the pilot
|
|
101
|
+
Rover has a built-in wishlist. If you ask it to do something it can't do yet, it should tell you clearly and log the request — that goes back to us as a signal for where the product needs to go next.
|
|
366
102
|
|
|
367
|
-
|
|
103
|
+
When something breaks or falls short, tell us: what you were trying to do, what you expected, and what happened instead.
|
|
368
104
|
|
|
369
|
-
|
|
105
|
+
---
|
|
370
106
|
|
|
371
|
-
|
|
107
|
+
## Your access details
|
|
372
108
|
|
|
373
|
-
|
|
374
|
-
Discord enabled: yes/no
|
|
375
|
-
Discord setup: <invite link or setup steps>
|
|
376
|
-
MCP access: optional / enabled / not enabled
|
|
109
|
+
When we onboard you, we'll send something like:
|
|
377
110
|
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
111
|
+
```
|
|
112
|
+
Chat URL: https://<handle>.rizom.ai/chat
|
|
113
|
+
Dashboard URL: https://<handle>.rizom.ai/
|
|
114
|
+
CMS URL: https://<handle>.rizom.ai/cms
|
|
115
|
+
Discord: yes/no — setup steps below if yes
|
|
116
|
+
MCP: enabled/not enabled — details below if enabled
|
|
382
117
|
```
|
|
383
118
|
|
|
384
|
-
If anything is unclear, reply with
|
|
119
|
+
If anything is unclear, reply with what you're seeing and we'll help.
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
set -euo pipefail
|
|
3
|
-
|
|
4
|
-
BRAIN_FILE="${BRAIN_YAML_PATH:-brain.yaml}"
|
|
5
|
-
SSH_USER="$(ruby -e 'require "yaml"; config = YAML.load_file("deploy/kamal/deploy.yml") || {}; puts(config.dig("ssh", "user") || "root")')"
|
|
6
|
-
IFS=',' read -ra HOSTS <<< "$KAMAL_HOSTS"
|
|
7
|
-
for host in "${HOSTS[@]}"; do
|
|
8
|
-
scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null "$BRAIN_FILE" "${SSH_USER}@${host}:/opt/brain.yaml"
|
|
9
|
-
done
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
ARG BUN_VERSION=1.3.10
|
|
2
|
-
FROM oven/bun:${BUN_VERSION}-slim AS runtime
|
|
3
|
-
|
|
4
|
-
WORKDIR /app
|
|
5
|
-
|
|
6
|
-
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
7
|
-
curl ca-certificates git \
|
|
8
|
-
&& rm -rf /var/lib/apt/lists/*
|
|
9
|
-
|
|
10
|
-
ENV XDG_DATA_HOME=/data
|
|
11
|
-
ENV XDG_CONFIG_HOME=/config
|
|
12
|
-
RUN mkdir -p /app/data /app/cache /app/brain-data && \
|
|
13
|
-
chmod -R 777 /app/data /app/cache /app/brain-data
|
|
14
|
-
|
|
15
|
-
EXPOSE 8080
|
|
16
|
-
|
|
17
|
-
CMD ["./node_modules/.bin/brain", "start"]
|
|
18
|
-
|
|
19
|
-
# --- standalone: bake full project into image (brain-cli deploy) ---
|
|
20
|
-
FROM runtime AS standalone
|
|
21
|
-
COPY package.json ./package.json
|
|
22
|
-
RUN bun install --production --ignore-scripts
|
|
23
|
-
COPY . .
|
|
24
|
-
|
|
25
|
-
# --- fleet: install published brain at pinned version (ops deploy) ---
|
|
26
|
-
FROM runtime AS fleet
|
|
27
|
-
ARG BRAIN_VERSION
|
|
28
|
-
RUN test -n "$BRAIN_VERSION" \
|
|
29
|
-
&& printf '{"name":"rover-pilot-runtime","private":true}\n' > package.json \
|
|
30
|
-
&& bun add @rizom/brain@$BRAIN_VERSION
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
service: rover
|
|
2
|
-
image: <%= ENV['IMAGE_REPOSITORY'] %>
|
|
3
|
-
|
|
4
|
-
servers:
|
|
5
|
-
web:
|
|
6
|
-
hosts:
|
|
7
|
-
- <%= ENV['SERVER_IP'] %>
|
|
8
|
-
|
|
9
|
-
proxy:
|
|
10
|
-
ssl:
|
|
11
|
-
certificate_pem: CERTIFICATE_PEM
|
|
12
|
-
private_key_pem: PRIVATE_KEY_PEM
|
|
13
|
-
hosts:
|
|
14
|
-
- <%= ENV['BRAIN_DOMAIN'] %>
|
|
15
|
-
- <%= ENV['PREVIEW_DOMAIN'] %>
|
|
16
|
-
app_port: 8080
|
|
17
|
-
healthcheck:
|
|
18
|
-
path: /health
|
|
19
|
-
|
|
20
|
-
registry:
|
|
21
|
-
server: ghcr.io
|
|
22
|
-
username: <%= ENV['REGISTRY_USERNAME'] %>
|
|
23
|
-
password:
|
|
24
|
-
- KAMAL_REGISTRY_PASSWORD
|
|
25
|
-
|
|
26
|
-
builder:
|
|
27
|
-
arch: amd64
|
|
28
|
-
|
|
29
|
-
env:
|
|
30
|
-
clear:
|
|
31
|
-
NODE_ENV: production
|
|
32
|
-
secret:
|
|
33
|
-
- AI_API_KEY
|
|
34
|
-
- GIT_SYNC_TOKEN
|
|
35
|
-
- MCP_AUTH_TOKEN
|
|
36
|
-
- DISCORD_BOT_TOKEN
|
|
37
|
-
|
|
38
|
-
volumes:
|
|
39
|
-
- /opt/brain-data:/app/brain-data
|
|
40
|
-
- /opt/brain.yaml:/app/brain.yaml
|