mo commited on
Commit
a9876bc
·
1 Parent(s): 76916b3

docs: project documentation — guides, FAQ, architecture, security policy and contribution workflow

Browse files
.github/ISSUE_TEMPLATE/bug_report.yml ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Bug report
2
+ description: Something is broken — help us fix it
3
+ title: "[Bug]: "
4
+ labels: ["bug"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for reporting! Please check [the FAQ](../docs/FAQ.md) first.
10
+ - type: input
11
+ id: version
12
+ attributes:
13
+ label: Version
14
+ description: "Output of `mona-agent --version` (or `node -e \"console.log(require('./apps/desktop/package.json').version)\"`)"
15
+ placeholder: "2.0.0"
16
+ validations:
17
+ required: true
18
+ - type: dropdown
19
+ id: os
20
+ attributes:
21
+ label: Operating system
22
+ options: [macOS, Linux, WSL2, Other]
23
+ validations:
24
+ required: true
25
+ - type: textarea
26
+ id: what
27
+ attributes:
28
+ label: What happened?
29
+ description: Steps to reproduce + expected vs actual behavior
30
+ validations:
31
+ required: true
32
+ - type: textarea
33
+ id: logs
34
+ attributes:
35
+ label: Logs
36
+ description: "Relevant output of `mona-agent start` / `mona-agent gui` (no secrets!)"
37
+ render: shell
38
+ - type: checkboxes
39
+ id: checks
40
+ attributes:
41
+ label: Confirmations
42
+ options:
43
+ - label: I removed API keys / tokens from the logs
44
+ required: true
45
+ - label: I searched existing issues
46
+ required: true
.github/ISSUE_TEMPLATE/config.yml ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: 📖 Documentation
4
+ url: https://github.com/MONAEXPERT/agent/tree/main/docs
5
+ about: Getting started, architecture, tools reference and FAQ
6
+ - name: 🌐 mona.expert
7
+ url: https://agent.mona.expert
8
+ about: The cloud dashboard — create an account and get your device key
9
+ - name: 🔒 Security issue?
10
+ url: https://github.com/MONAEXPERT/agent/blob/main/SECURITY.md
11
+ about: Report vulnerabilities privately (do NOT open a public issue)
.github/ISSUE_TEMPLATE/feature_request.yml ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Feature request
2
+ description: Suggest an idea for mona-agent
3
+ title: "[Feature]: "
4
+ labels: ["enhancement"]
5
+ body:
6
+ - type: textarea
7
+ id: problem
8
+ attributes:
9
+ label: Problem
10
+ description: What pain does this solve?
11
+ validations:
12
+ required: true
13
+ - type: textarea
14
+ id: idea
15
+ attributes:
16
+ label: Proposed solution
17
+ description: How would it look from the user's side?
18
+ validations:
19
+ required: true
20
+ - type: textarea
21
+ id: alternatives
22
+ attributes:
23
+ label: Alternatives considered
24
+ - type: checkboxes
25
+ id: checks
26
+ attributes:
27
+ label: Confirmations
28
+ options:
29
+ - label: I searched existing issues
30
+ required: true
CODE_OF_CONDUCT.md ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our
6
+ community a harassment-free experience for everyone, regardless of age, body
7
+ size, visible or invisible disability, ethnicity, sex characteristics,
8
+ gender identity and expression, level of experience, education,
9
+ socio-economic status, nationality, personal appearance, race, religion, or
10
+ sexual identity and orientation.
11
+
12
+ We pledge to act and interact in ways that contribute to an open, welcoming,
13
+ diverse, inclusive, and healthy community.
14
+
15
+ ## Our Standards
16
+
17
+ Examples of behavior that contributes to a positive environment:
18
+
19
+ - Demonstrating empathy and kindness toward other people
20
+ - Being respectful of differing opinions, viewpoints, and experiences
21
+ - Giving and gracefully accepting constructive feedback
22
+ - Accepting responsibility and apologizing to those affected by our mistakes
23
+ - Focusing on what is best not just for us as individuals, but for the
24
+ overall community
25
+
26
+ Examples of unacceptable behavior:
27
+
28
+ - The use of sexualized language or imagery, and sexual attention or
29
+ advances of any kind
30
+ - Trolling, insulting or derogatory comments, and personal or political
31
+ attacks
32
+ - Public or private harassment
33
+ - Publishing others' private information without explicit permission
34
+ - Other conduct which could reasonably be considered inappropriate in a
35
+ professional setting
36
+
37
+ ## Enforcement
38
+
39
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
40
+ reported to the community leaders responsible for enforcement at
41
+ `hello@mona.expert`. All complaints will be reviewed and investigated
42
+ promptly and fairly.
43
+
44
+ ## Attribution
45
+
46
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
47
+ version 2.1, available at
48
+ [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
49
+
50
+ [homepage]: https://www.contributor-covenant.org
51
+ [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
CONTRIBUTING.md ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Contributing to mona-agent
2
+
3
+ Thanks for helping build the open-source client! This file tells you how to
4
+ set up, test and propose changes.
5
+
6
+ ## Setup
7
+
8
+ ```bash
9
+ git clone git@github.com:MONAEXPERT/agent.git
10
+ cd agent
11
+ npm install
12
+ ```
13
+
14
+ Requirements: Node.js ≥ 20, npm ≥ 9. No build step — plain ESM.
15
+
16
+ ## Layout
17
+
18
+ ```
19
+ apps/desktop/ the device agent (CLI, daemon, TUI, tools, tests)
20
+ packages/engine/ cloud-brain client (self-contained)
21
+ packages/protocol/ typed message schemas
22
+ docs/ user + architecture docs
23
+ ```
24
+
25
+ ## Testing
26
+
27
+ ```bash
28
+ npm test
29
+ ```
30
+
31
+ The suite covers the control channel (against a fake in-process server),
32
+ the agent loop, tool behavior and the TUI scrollback. Please keep it green
33
+ and add tests for new behavior.
34
+
35
+ ## Conventions
36
+
37
+ - Plain modern JavaScript, ES modules, no build step.
38
+ - Keep the runtime dependency count at **one** (`ws`). Prefer Node built-ins.
39
+ - Commands executed by `tools/shell` must pass the guard allowlist — never
40
+ weaken the guard to make a test pass.
41
+ - Commits: `type(scope): summary` (feat, fix, docs, refactor, test).
42
+ - The public repo contains **client code only**. Server-side code must not
43
+ be committed here (SaaS boundary).
44
+
45
+ ## Pull requests
46
+
47
+ 1. Fork, branch, implement, test.
48
+ 2. `npm test` green.
49
+ 3. Open a PR with a clear description of what/why.
50
+ 4. One logical change per PR. Small is beautiful.
51
+
52
+ ## Code of Conduct
53
+
54
+ See [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).
README.md CHANGED
@@ -1,220 +1,162 @@
1
- # mona-agent — Cloud-Brained AI Agent for Your Device
2
 
3
  <p align="center">
4
- <strong>Open-source device agent. Free forever. MIT licensed.</strong>
 
5
  </p>
6
 
7
  <p align="center">
8
  <a href="https://github.com/MONAEXPERT/agent/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License: MIT"></a>
9
- <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg" alt="Node.js"></a>
10
- <img src="https://img.shields.io/badge/dependencies-1-lightgrey" alt="1 dependency">
11
- <img src="https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20WSL2-informational" alt="Platforms">
 
 
12
  </p>
13
 
14
  ---
15
 
16
- ## What is this?
17
 
18
- **mona-agent** is a headless daemon that runs on any device. It connects to a control plane, receives commands, executes local tools, and streams results back.
 
 
 
19
 
20
- No LLM provider keys (OpenAI, Anthropic, Google, etc.) are stored on your device. Reasoning happens in the cloud the device is a smart terminal.
 
 
 
 
 
21
 
22
  ```
23
- Your Device Control Plane (SaaS or self-hosted)
 
 
 
 
 
 
 
 
24
  +-------------------+ +----------------------------+
25
- | mona-agent |--- WSS ------+ | Dashboard / Website |
26
- | | | Auth / User Management |
27
- | * Terminal GUI |<-- commands -- | API Key Vault (AES-256) |
28
- | * Local tools |-- telemetry -+ | LLM Proxy (5 providers) |
29
- | * File sandbox |-- tokens ----+ | Agent Orchestration |
30
- | * Shell guard |-- metrics ---+ | Audit Log |
31
- | | | |
32
- | <- NO API KEYS ->| | <-- YOUR KEYS STAY HERE --> |
33
- +-------------------+ +----------------------------+
34
  ```
35
 
36
- ## Quick Start
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
 
38
  ```bash
39
- # Install
40
  curl -fsSL https://agent.mona.expert/install.sh | bash
41
 
42
- # 1. Login with your agent.mona.expert API key
43
- mona-agent login # or press 'l' inside the dashboard
44
 
45
- # 2. Verify the connection to the control plane
46
- mona-agent connect
47
-
48
- # 3. Run the terminal dashboard (auto-starts the agent)
49
  mona-agent gui
50
- ```
51
-
52
- Once connected, send commands to this device from the
53
- [agent.mona.expert](https://agent.mona.expert) dashboard — tasks, tools
54
- and results stream live into the terminal.
55
-
56
- ## Terminal Dashboard
57
 
58
- Built-in TUI zero extra dependencies. Pure ANSI escape codes.
59
- Live system metrics, streaming task output, and a color-coded activity log.
60
-
61
- ```
62
- ┌─ mona-agent v1.2.0 🍎 ● agent-1 │ ● connected ─┐
63
- ┌─ System ─────────────────────┐ ┌─ Activity ────────────────────────┐
64
- │ Host MacBook-Air │ │ 22:54 ● Connected to │
65
- │ OS macOS x64 │ │ agent.mona.expert │
66
- │ CPUs 10 cores │ │ 22:55 ▸ Task: "sys info" │
67
- │ Mem ████████████░░░░ 62% │ │ 22:55 ⚙ Tool: sysinfo │
68
- │ 5.3 GB / 8.6 GB │ │ 22:56 ✓ Complete (142 tok, 3.1s) │
69
- │ Load 1.20 0.80 0.50 │ │ │
70
- │ IP 192.168.1.42 │ │ │
71
- │ Up 3h 25m │ │ │
72
- ├─ Task ────────────────────────┤ │ │
73
- │ ✓ Idle — waiting for commands │ │ │
74
- │ Control this agent from │ │ │
75
- │ agent.mona.expert │ │ │
76
- └───────────────────────────────┘ └───────────────────────────────────┘
77
- ├──────────────────────────────────────────────────────────────────────┤
78
- │ q quit · l login · c clear · r reconnect · d debug · h help ● online│
79
- └──────────────────────────────────────────────────────────────────────┘
80
  ```
81
 
82
- ### Connect your agent (from the terminal)
83
-
84
- | Key | Action |
85
- |-----|--------|
86
- | `l` | Login — paste your API key right in the dashboard |
87
- | `r` | (Re)connect to the cloud |
88
- | `q` / `Ctrl+C` | Quit |
89
- | `c` | Clear activity log |
90
- | `d` | Toggle debug bar (cloud URL, WS URL, creds path) |
91
- | `h` / `?` | Help overlay with the full connect guide |
92
- | `↑` / `↓` | Scroll activity log |
93
-
94
- No key saved yet? The dashboard opens in setup mode and shows the
95
- connect steps — press `l` and paste your key, the agent connects
96
- automatically. Works headless too: `mona-agent start`.
97
-
98
- ## Tools
99
-
100
- The agent ships with four sandboxed tool modules:
101
-
102
- | Tool | Capabilities | Security |
103
- |------|-------------|----------|
104
- | `sysinfo` | OS, CPU, memory, load, network, uptime | Read-only |
105
- | `shell` | Command execution | Allowlist + blocked patterns |
106
- | `files` | Read/write/list/delete/stat | Path sandboxed |
107
- | `net` | HTTP fetch/check, connectivity | HTTP(S)-only |
108
 
109
- ### Shell Security
110
-
111
- By default only safe commands are allowed. Extend via environment:
112
 
113
  ```bash
114
- MONA_ALLOW_CMDS="df,uptime,uname,git,npm,docker" mona-agent start
 
 
 
 
 
115
  ```
116
 
117
- Destructive patterns (`rm -rf /`, `mkfs`, fork bombs) are always blocked.
118
-
119
- ## Commands
120
 
121
- ```
122
- mona-agent gui Terminal dashboard (auto-starts the agent)
123
- mona-agent start Headless daemon no UI, log to stderr
124
- mona-agent login Save your control-plane API key
125
- mona-agent connect Test / force connection to the control plane
126
- mona-agent chat <msg> Send a chat message via the API
127
- mona-agent exec <t> Execute a tool directly (sysinfo, shell, files, net)
128
- mona-agent status Show login state and config paths
129
- mona-agent debug Verbose system + connection info
130
- mona-agent help Show all commands and environment vars
131
- ```
132
 
133
- Without arguments, auto-detects: GUI if terminal, headless otherwise.
134
 
135
- ## Environment Variables
136
 
137
- | Variable | Default | Purpose |
138
- |----------|---------|---------|
139
- | `MONA_CLOUD` | `https://agent.mona.expert` | Control plane URL |
140
- | `MONA_CLOUD_WS` | Auto-derived | WebSocket URL override |
141
- | `MONA_ALLOW_CMDS` | `df,uptime,uname,...` | Shell command allowlist |
142
- | `MONA_SHELL_UNSAFE` | — | Set to `1` for unrestricted shell |
143
- | `MONA_WORKSPACE` | `~/.mona-agent/workspace` | File tool sandbox directory |
144
- | `MONA_LLM_PROVIDER` | `openai` | Docker platform: LLM provider (openai, anthropic, google, deepseek, openrouter) |
145
- | `MONA_LLM_MODEL` | `gpt-4o-mini` | Docker platform: default model |
146
 
147
- ## Project Structure
148
-
149
- ```
150
- agent/
151
- +-- bin/mona-agent.js CLI entry point
152
- +-- src/
153
- | +-- agent.js Agent daemon (reasoning loop)
154
- | +-- cloud.js Cloud API client (SSE streaming)
155
- | +-- config.js Configuration & credential management
156
- | +-- control.js WebSocket control channel (reconnect, metrics)
157
- | +-- log.js Structured event-driven logger
158
- | +-- tui.js Terminal dashboard (pure ANSI)
159
- | +-- tools/
160
- | +-- index.js Tool registry & dispatcher
161
- | +-- sysinfo.js System information
162
- | +-- shell.js Sandboxed shell execution
163
- | +-- files.js File system operations
164
- | +-- net.js Network operations
165
- +-- test/
166
- | +-- agent.test.mjs 14 unit tests
167
- +-- install.sh One-line install script
168
- +-- README.md
169
- +-- LICENSE
170
- +-- package.json
171
- ```
172
 
173
- ## Architecture
 
 
174
 
175
- **Cloud-brained**: Reasoning happens on the control plane where API keys live. The device executes tools and streams results. The device never touches LLM provider credentials.
 
 
176
 
177
- - **Commands** (`run`, `tool`, `ping`) flow: control plane -> cloud -> device
178
- - **Telemetry** (`metrics`, `steps`, `tokens`, `results`) flow: device -> cloud -> control plane
179
- - **API keys** never leave the control plane
180
 
181
- The device stores **only** the control-plane API key in `~/.mona-agent/credentials.json` (mode `0600`).
 
 
182
 
183
- ## Open Source & SaaS
184
 
185
- | What | Where | Price |
186
- |------|-------|-------|
187
- | **Device agent** | This repo — install, modify, fork | Free & open source (MIT) |
188
- | **Control plane** | Self-host or SaaS at [agent.mona.expert](https://agent.mona.expert) | Free tier available |
189
 
190
- The agent is MIT. Use it with any control plane. The cloud platform at agent.mona.expert provides the managed experience with premium plans for teams.
 
 
 
 
 
 
 
 
191
 
192
  ## Development
193
 
194
  ```bash
195
- git clone https://github.com/MONAEXPERT/agent.git
196
  cd agent
197
  npm install
198
- npm test # 14 tests, all passing
 
199
  ```
200
 
 
 
 
201
  ## License
202
 
203
- MIT — free forever.
204
 
205
  ---
206
 
207
- <p align="center">
208
- <sub>
209
- mona-agent &middot; <a href="https://agent.mona.expert">agent.mona.expert</a> &middot;
210
- <a href="https://github.com/MONAEXPERT/agent">GitHub</a> &middot;
211
- <a href="https://github.com/MONAEXPERT/agent/issues">Issues</a>
212
- </sub>
213
- </p>
214
-
215
- <p align="center">
216
- <sub>Open-source device agent. No LLM keys on your device. Ever.</sub>
217
- </p>
218
-
219
- # monorepo (merged enterprise version)
220
- See docs/ARCHITECTURE.md — one key (mona.expert), one brain (mona.expert engine).
 
1
+ # mona-agent — the cloud-brained AI agent for your device ⚡
2
 
3
  <p align="center">
4
+ <strong>An open-source AI agent that lives on your Mac or Linux machine.<br/>
5
+ Chat with it, let it run commands, manage files — from any device, anywhere.</strong>
6
  </p>
7
 
8
  <p align="center">
9
  <a href="https://github.com/MONAEXPERT/agent/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License: MIT"></a>
10
+ <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg" alt="Node.js 20+"></a>
11
+ <a href="https://github.com/MONAEXPERT/agent/actions"><img src="https://img.shields.io/badge/tests-26%2F26-passing-brightgreen.svg" alt="Tests: 26/26 passing"></a>
12
+ <a href="https://github.com/MONAEXPERT/agent/blob/main/package.json"><img src="https://img.shields.io/badge/dependencies-1-lightgrey.svg" alt="1 runtime dependency"></a>
13
+ <img src="https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20WSL2-informational.svg" alt="Platforms: macOS, Linux, WSL2">
14
+ <img src="https://img.shields.io/badge/cloud-agent.mona.expert-blueviolet.svg" alt="Cloud: agent.mona.expert">
15
  </p>
16
 
17
  ---
18
 
19
+ ## What is mona-agent?
20
 
21
+ **mona-agent** is a lightweight, headless **AI agent daemon** that runs on your
22
+ computer. It connects to the mona.expert cloud, receives commands from your
23
+ dashboard or chat, executes **local tools** (files, shell, network, system
24
+ info), and streams the results back in real time.
25
 
26
+ Think of it as a **smart terminal for your machine**an AI assistant with
27
+ hands. You can be at the office and ask your Mac at home to check disk space,
28
+ restart a service, or find a file. The agent does it and answers.
29
+
30
+ **No AI API keys ever live on your device.** All reasoning happens in the
31
+ cloud. Your device is a secure, capable pair of hands.
32
 
33
  ```
34
+ Your Device mona.expert Cloud (SaaS)
35
+ +-------------------+ +----------------------------+
36
+ | mona-agent | | Dashboard (agent.mona.expert)
37
+ | |--- HTTPS ----+ | Agent orchestration
38
+ | * Terminal UI | | AI engine (the brain)
39
+ | * File tools |<-- commands --+ Chat & history
40
+ | * Shell guard | | API key vault (AES-256)
41
+ | * Network tools |-- metrics --->+ Live device monitoring
42
+ | * System info |-- results --->+ Audit log
43
  +-------------------+ +----------------------------+
 
 
 
 
 
 
 
 
 
44
  ```
45
 
46
+ ## Why mona-agent?
47
+
48
+ - 🖥 **Remote control with AI** — chat with your computer from anywhere, or
49
+ let the cloud agent act on its own
50
+ - 🔐 **Zero secrets on the device** — no OpenAI/Anthropic/Google keys are
51
+ stored locally; they live in the encrypted cloud vault
52
+ - ⚡ **Terminal-native** — a fast TUI dashboard with live log streaming,
53
+ or a fully headless daemon mode
54
+ - 🛠 **Real tools, real actions** — files, shell commands, network checks,
55
+ system metrics
56
+ - 📊 **Live device monitoring** — CPU, RAM, disk, load, uptime streamed to
57
+ your dashboard every 10 seconds
58
+ - 📦 **One command install** — no build step, single runtime dependency
59
+ (`ws`), works on macOS, Linux and WSL2
60
+ - 🆓 **Free and open source** — MIT licensed
61
+
62
+ ## Quickstart — up and running in 60 seconds
63
 
64
  ```bash
65
+ # 1. Install (macOS / Linux / WSL2, needs Node.js 20+)
66
  curl -fsSL https://agent.mona.expert/install.sh | bash
67
 
68
+ # 2. Log in with your mona.expert API key
69
+ mona-agent login
70
 
71
+ # 3. Start the terminal dashboard
 
 
 
72
  mona-agent gui
 
 
 
 
 
 
 
73
 
74
+ # …or run fully headless in the background
75
+ mona-agent start
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  ```
77
 
78
+ Now open **<https://agent.mona.expert/dashboard>** your device appears
79
+ with live stats, and you can chat with it right from the browser.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
 
81
+ ## Usage
 
 
82
 
83
  ```bash
84
+ mona-agent login # store your mona.expert API key
85
+ mona-agent connect # connect to the cloud control plane
86
+ mona-agent gui # terminal dashboard (live log, status)
87
+ mona-agent chat "Check disk usage and free up old logs" # one-shot command
88
+ mona-agent exec "uptime && df -h" # run a command
89
+ mona-agent start # daemon mode (background, auto-reconnect)
90
  ```
91
 
92
+ ## Built-in tools
 
 
93
 
94
+ | Tool | What the agent can do with it |
95
+ |-----------|------------------------------------------------------------|
96
+ | `files` | List, read, write, move, delete — confined to safe paths |
97
+ | `shell` | Run commands through a guarded, allowlisted shell |
98
+ | `net` | HTTP requests, connectivity checks, DNS lookups |
99
+ | `sysinfo` | CPU, memory, disk, load, uptime, platform, network info |
 
 
 
 
 
100
 
101
+ Full reference: **[docs/TOOLS.md](docs/TOOLS.md)**
102
 
103
+ ## How it works
104
 
105
+ The daemon maintains a **control channel** to the cloud over HTTPS + WebSocket
106
+ (where available). It streams device metrics every 10 seconds, receives
107
+ **commands** from the cloud engine, executes them with the local tool
108
+ sandbox, and streams results back. Read the full walkthrough in
109
+ **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)**.
 
 
 
 
110
 
111
+ ## FAQ
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
 
113
+ **Is mona-agent free?** — Yes. The client is MIT licensed and free forever.
114
+ The mona.expert cloud has a free tier at
115
+ [agent.mona.expert](https://agent.mona.expert).
116
 
117
+ **Does my API key get stored on the device?** Only your mona.expert
118
+ device token is stored locally (`~/.mona-agent/credentials.json`). AI
119
+ provider keys live only in the cloud vault, AES-256 encrypted.
120
 
121
+ **Can I run it on a server?** Yes. Any Node.js 20+ machine works,
122
+ including headless Linux servers and Raspberry Pi class devices.
 
123
 
124
+ **What data leaves my device?** Command results and system metrics, only
125
+ to the mona.expert cloud you are logged into. See
126
+ **[SECURITY.md](SECURITY.md)**.
127
 
128
+ More answers: **[docs/FAQ.md](docs/FAQ.md)**
129
 
130
+ ## Documentation
 
 
 
131
 
132
+ | Page | Contents |
133
+ |------|----------|
134
+ | [docs/GETTING-STARTED.md](docs/GETTING-STARTED.md) | Install, login, first steps, troubleshooting |
135
+ | [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) | Daemon internals, control channel, metrics pipeline |
136
+ | [docs/TOOLS.md](docs/TOOLS.md) | Tool-by-tool reference with examples |
137
+ | [docs/FAQ.md](docs/FAQ.md) | Frequently asked questions |
138
+ | [docs/CHANGELOG.md](docs/CHANGELOG.md) | Release history |
139
+ | [SECURITY.md](SECURITY.md) | Security model & vulnerability reporting |
140
+ | [CONTRIBUTING.md](CONTRIBUTING.md) | Development setup, tests, conventions |
141
 
142
  ## Development
143
 
144
  ```bash
145
+ git clone git@github.com:MONAEXPERT/agent.git
146
  cd agent
147
  npm install
148
+ npm test # 26 tests, 9 suites
149
+ npm run gui # run the dev build of the TUI
150
  ```
151
 
152
+ Requires Node.js ≥ 20. The codebase is plain modern JavaScript (ESM), no
153
+ build step.
154
+
155
  ## License
156
 
157
+ MIT — see [LICENSE](LICENSE). Free forever.
158
 
159
  ---
160
 
161
+ **[mona.expert](https://agent.mona.expert)** — one key, one brain, any
162
+ device. ⚡
 
 
 
 
 
 
 
 
 
 
 
 
SECURITY.md ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Security Policy
2
+
3
+ mona-agent is a client for the mona.expert cloud. This document describes
4
+ the client-side security model and how to report vulnerabilities.
5
+
6
+ ## Supported versions
7
+
8
+ | Version | Supported |
9
+ |---|---|
10
+ | 2.x (current) | ✅ |
11
+ | < 2.0 | ❌ |
12
+
13
+ ## Security model
14
+
15
+ - **No AI provider keys on the device.** The client stores only a
16
+ mona.expert device token (`~/.mona-agent/credentials.json`, mode 0600).
17
+ All third-party keys live in the cloud vault, AES-256 encrypted.
18
+ - **Guarded shell.** Commands run through an allowlist; dangerous patterns
19
+ are rejected before execution.
20
+ - **Confined file tool.** Reads and writes are limited to safe roots;
21
+ symlink escapes are refused.
22
+ - **Egress-only networking.** The daemon opens outbound connections only
23
+ and listens on localhost exclusively (for the local dashboard). No
24
+ inbound ports, no public exposure.
25
+ - **Metrics minimization.** Only system metrics and requested results are
26
+ sent, only to the cloud endpoint you configured (`MONA_CLOUD`).
27
+ - **Transparent transport.** HTTPS with Bearer-auth; WebSocket upgrade when
28
+ available, HTTPS polling fallback otherwise.
29
+
30
+ ## Reporting a vulnerability
31
+
32
+ **Do not open a public issue for security bugs.**
33
+
34
+ Please report privately first so we can fix before disclosure:
35
+
36
+ 1. Email: `security@mona.expert`
37
+ 2. Include: affected version, steps to reproduce, impact, and (if you have
38
+ it) a suggested fix.
39
+ 3. We will acknowledge within 48 hours and aim to publish a fix + advisory
40
+ within 14 days, crediting you if you wish.
41
+
42
+ ### Disclosure policy
43
+
44
+ - 48 h — acknowledgment
45
+ - 14 days — fix + coordinated disclosure (extendable on request)
46
+
47
+ ## Hall of fame
48
+
49
+ We appreciate all responsible disclosures. With your permission, we list
50
+ contributors here.
docs/ARCHITECTURE.md ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # mona-agent Architecture
2
+
3
+ How the open-source device daemon is built, and how it talks to the
4
+ mona.expert cloud.
5
+
6
+ ## Overview
7
+
8
+ mona-agent is a **headless Node.js daemon** with two jobs:
9
+
10
+ 1. **Execute** — run local tools (files, shell, network, system info) on
11
+ behalf of the cloud agent.
12
+ 2. **Report** — stream device metrics and command results back to the cloud
13
+ in real time.
14
+
15
+ ```
16
+ ┌─────────────────────────────────────┐ ┌──────────────────────────────┐
17
+ │ Device (your machine) │ │ mona.expert cloud (SaaS) │
18
+ │ │ │ │
19
+ │ mona-agent │ │ Control plane API │
20
+ │ ┌──────────────┐ ┌────────────┐ │ │ /api/v1/agent/verify │
21
+ │ │ ControlChannel│◄─►│ tools/ │ │ │ /api/v1/agent/stats │
22
+ │ │ (HTTPS + WS) │ │ files │ │ │ /api/v1/agent/chat … │
23
+ │ │ │ │ shell │ │ │ │
24
+ │ │ ↕ metrics │ │ net │ │ │ AI engine (the brain) │
25
+ │ │ ↕ commands │ │ sysinfo │ │ │ Dashboard + device overview │
26
+ │ └──────────────┘ └────────────┘ │ │ Key vault (AES-256) │
27
+ │ │ │ │ Audit log │
28
+ │ ▼ │ └──────────────────────────────┘
29
+ │ TUI (mona-agent gui) │
30
+ │ headless daemon (mona-agent start) │
31
+ └─────────────────────────────────────┘
32
+ ```
33
+
34
+ ## Modules
35
+
36
+ | Module | Responsibility |
37
+ |---|---|
38
+ | `bin/mona-agent.js` | CLI entrypoint — `gui`, `start`, `login`, `connect`, `chat`, `exec` |
39
+ | `src/config.js` | Credentials, cloud endpoint resolution, platform detection |
40
+ | `src/cloud.js` | REST client for the control plane API (Bearer-auth) |
41
+ | `src/control.js` | Control channel: registration, command dispatch, metrics streaming |
42
+ | `src/api.js` | Local HTTP API + WebSocket (used by the local dashboard / desktop UI) |
43
+ | `src/tools/*` | The tool sandbox: `files`, `shell`, `net`, `sysinfo` |
44
+ | `src/tui.js` | Terminal dashboard — live log, scrollback, status bar |
45
+ | `src/log.js` | Structured logging (quiet in daemon mode) |
46
+
47
+ ## Control channel lifecycle
48
+
49
+ 1. **Boot** — `config.js` loads `~/.mona-agent/credentials.json` and
50
+ resolves the cloud endpoint (`MONA_CLOUD` or `https://agent.mona.expert`).
51
+ 2. **Verify** — the daemon authenticates with `POST /api/v1/agent/verify`
52
+ (Bearer token). The server returns the agent identity and capabilities.
53
+ 3. **Metrics** — every 10 seconds the daemon POSTs a snapshot to
54
+ `/api/v1/agent/stats`: CPU %, load average, memory, disk, uptime, host
55
+ and platform info.
56
+ 4. **Commands** — the cloud pushes commands (chat messages, tool calls) over
57
+ the control channel. The daemon executes them with the tool sandbox and
58
+ streams results back.
59
+ 5. **Resilience** — metrics streaming is independent of the WebSocket
60
+ channel. If the server cannot upgrade to WebSocket (e.g. shared hosting
61
+ behind LiteSpeed), the daemon transparently falls back to HTTPS polling
62
+ and keeps streaming — no reconnect storm.
63
+
64
+ ## Metrics pipeline (HTTP-first)
65
+
66
+ The client was designed so that **metrics never depend on a WebSocket
67
+ upgrade**:
68
+
69
+ - Every 10 s: `POST /api/v1/agent/stats` with CPU, memory, disk, load,
70
+ uptime, hostname, platform, arch, version, IP.
71
+ - The cloud keeps the latest snapshot plus a rolling 180-point history per
72
+ device; the dashboard polls every 3 s — effectively live.
73
+ - A device is shown as **online** when its last snapshot is ≤ 20 s old.
74
+
75
+ ## Security model (client side)
76
+
77
+ - **No AI provider keys on the device.** Only a mona.expert device token is
78
+ stored (`~/.mona-agent/credentials.json`, mode 0600).
79
+ - **Guarded shell** — commands run through an allowlist; dangerous patterns
80
+ are blocked before execution.
81
+ - **Confined files tool** — reads/writes are limited to safe, allowed paths.
82
+ - **Egress-only** — the daemon opens outbound connections only; it listens
83
+ on localhost only (for the local dashboard).
84
+
85
+ See [SECURITY.md](../SECURITY.md) for the full model and disclosure policy.
86
+
87
+ ## Why HTTPS polling instead of WebSockets?
88
+
89
+ The control plane runs on shared hosting (LiteSpeed), where WebSocket
90
+ proxying is not always available and long-running Node processes are not
91
+ possible. The client therefore uses:
92
+
93
+ - **WebSocket** when the server upgrades it (self-hosted / VPS setups),
94
+ - **HTTPS polling + streaming metrics** everywhere else.
95
+
96
+ One code path, two transports — the daemon decides at runtime.
docs/CHANGELOG.md ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Changelog
2
+
3
+ All notable changes to the mona-agent client are documented here.
4
+ Format: [Keep a Changelog](https://keepachangelog.com), versioning:
5
+ [SemVer](https://semver.org).
6
+
7
+ ## [2.0.0] — 2026-08-13
8
+
9
+ ### Added
10
+
11
+ - **HTTP metrics pipeline** — device metrics (CPU, memory, disk, load,
12
+ uptime, host info) stream to the cloud every 10 s via HTTPS POST,
13
+ independent of the WebSocket channel. Live monitoring works on every
14
+ hosting setup, including shared hosting without WS proxying.
15
+ - **Resilient control channel** — WebSocket upgrade is detected at runtime;
16
+ when unavailable the daemon transparently keeps streaming over HTTPS and
17
+ skips the reconnect storm.
18
+ - **Local dashboard API** — the daemon serves a localhost API + WebSocket
19
+ for the terminal dashboard and desktop UI.
20
+ - Extended device metrics: CPU %, load average, memory, disk, uptime,
21
+ CPU model, core count.
22
+ - Monorepo layout: `apps/desktop` (agent), `packages/engine` (cloud-brain
23
+ client), `packages/protocol` (message schemas).
24
+ - One-line installer with PATH persistence for zsh/bash/profile.
25
+
26
+ ### Changed
27
+
28
+ - Repo is now **client-only** (SaaS boundary) — server-side code moved to a
29
+ private codebase.
30
+ - `mona-agent login` flow stores credentials outside the install dir.
31
+
32
+ ## [1.x] — earlier
33
+
34
+ ### Added
35
+
36
+ - Terminal dashboard (TUI): live log, auto-follow, scrollback, status.
37
+ - Tool sandbox: files, shell (guarded), net, sysinfo.
38
+ - Control-plane protocol: register, chat RPC, LLM proxy.
39
+ - Docker-platform protocol support (self-hosted control plane).
40
+
41
+ [2.0.0]: https://github.com/MONAEXPERT/agent/releases/tag/v2.0.0
docs/FAQ.md ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Frequently Asked Questions
2
+
3
+ ## What is mona-agent?
4
+
5
+ An open-source AI agent daemon for macOS, Linux and WSL2. It connects your
6
+ machine to the mona.expert cloud, executes local tools on your behalf, and
7
+ streams live metrics to your dashboard.
8
+
9
+ ## Is mona-agent free?
10
+
11
+ Yes — MIT licensed, free forever. The [mona.expert](https://agent.mona.expert)
12
+ cloud has a free tier.
13
+
14
+ ## Does mona-agent need an API key?
15
+
16
+ It needs **one key**: your mona.expert device token (created in the
17
+ dashboard → Settings). AI provider keys (OpenAI, Anthropic, …) live only in
18
+ the cloud vault — never on your device.
19
+
20
+ ## Where is my key stored?
21
+
22
+ `~/.mona-agent/credentials.json`, with restrictive permissions, outside the
23
+ install directory (which can be wiped and reinstalled safely).
24
+
25
+ ## What does mona-agent send to the cloud?
26
+
27
+ Only to the cloud you are logged into:
28
+
29
+ - device metrics (CPU, memory, disk, load, uptime, host info)
30
+ - results of commands/tools the cloud agent asked for
31
+ - chat messages you send from the dashboard
32
+
33
+ Nothing is sent to third parties. Full details: [SECURITY.md](../SECURITY.md).
34
+
35
+ ## Does the device need a public IP or open ports?
36
+
37
+ No. The daemon opens **outbound** connections only. It works behind NAT,
38
+ firewalls and CGNAT. It listens on localhost only (for the local dashboard).
39
+
40
+ ## Can I run mona-agent on a server / Raspberry Pi?
41
+
42
+ Yes — any Node.js 20+ machine. Headless mode: `mona-agent start` (or a
43
+ systemd unit). Small footprint, one runtime dependency.
44
+
45
+ ## Does it work on Windows?
46
+
47
+ In WSL2 or Git Bash, yes. Native PowerShell is not a target today.
48
+
49
+ ## How do I update mona-agent?
50
+
51
+ ```bash
52
+ curl -fsSL https://agent.mona.expert/install.sh | bash
53
+ ```
54
+
55
+ The installer replaces the agent in place; your credentials are untouched.
56
+
57
+ ## How do I uninstall?
58
+
59
+ ```bash
60
+ rm -rf ~/.mona-agent ~/.local/bin/mona-agent
61
+ ```
62
+
63
+ ## Why does my dashboard show my device as offline?
64
+
65
+ The device is marked online when its last metrics snapshot is ≤ 20 seconds
66
+ old. Check `mona-agent start` is running and that the device has HTTPS
67
+ egress to agent.mona.expert.
68
+
69
+ ## Can the agent damage my machine?
70
+
71
+ The tool sandbox blocks dangerous patterns before execution, the files tool
72
+ is confined to safe paths, and every action is recorded in the cloud audit
73
+ log. Treat the agent like any other user with shell access: grant what you
74
+ trust.
75
+
76
+ ## Where do I report bugs or security issues?
77
+
78
+ Bugs: [GitHub issues](https://github.com/MONAEXPERT/agent/issues).
79
+ Security: [SECURITY.md](../SECURITY.md) (private disclosure first).
docs/GETTING-STARTED.md ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Getting Started with mona-agent
2
+
3
+ Install the mona-agent device daemon, log in with your mona.expert key, and
4
+ have your machine connected to the cloud in under a minute.
5
+
6
+ ## 1. Prerequisites
7
+
8
+ - **Node.js 20 or newer** — check with `node -v`.
9
+ - macOS: `brew install node`
10
+ - Ubuntu/Debian: `curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && apt install nodejs`
11
+ - Windows: use [WSL2](https://learn.microsoft.com/windows/wsl/install) (native Windows Git Bash works too)
12
+ - An account + **API key** at [agent.mona.expert](https://agent.mona.expert/dashboard) → Settings.
13
+
14
+ ## 2. Install
15
+
16
+ ```bash
17
+ curl -fsSL https://agent.mona.expert/install.sh | bash
18
+ ```
19
+
20
+ The installer:
21
+
22
+ - Downloads the agent from GitHub (`MONAEXPERT/agent`)
23
+ - Installs dependencies (`ws` only)
24
+ - Places the daemon in `~/.mona-agent/agent`
25
+ - Adds `mona-agent` to your PATH (via `~/.local/bin`, persisted in your shell rc)
26
+
27
+ ## 3. Log in
28
+
29
+ ```bash
30
+ mona-agent login
31
+ ```
32
+
33
+ Paste your mona.expert API key when prompted. The key is stored in
34
+ `~/.mona-agent/credentials.json` (outside the agent install directory).
35
+
36
+ ## 4. Connect and use
37
+
38
+ ```bash
39
+ mona-agent gui # terminal dashboard with live log
40
+ mona-agent chat "free disk space" # one-shot conversation
41
+ mona-agent exec "uptime" # run a single command
42
+ mona-agent start # headless daemon (auto-reconnect)
43
+ ```
44
+
45
+ ## 5. See it in the browser
46
+
47
+ Open <https://agent.mona.expert/dashboard>. Your device appears with live
48
+ CPU, memory, disk and load — and a chat window connected to the cloud brain.
49
+
50
+ ## Troubleshooting
51
+
52
+ | Symptom | Fix |
53
+ |---|---|
54
+ | `mona-agent: command not found` | Re-open your terminal, or run `export PATH="$HOME/.local/bin:$PATH"` |
55
+ | `Node.js 20+ required` | Upgrade Node (`brew upgrade node` / nodesource) |
56
+ | Agent connects but dashboard shows no device | Confirm you ran `mona-agent login` with the key from your account |
57
+ | Metrics stream, chat replies "No API key configured" | Add an AI provider key in the dashboard → Settings (the cloud brain needs one) |
58
+ | Firewall / corporate proxy | Set `MONA_CLOUD=https://agent.mona.expert` and check HTTPS egress |
59
+
60
+ ## Uninstall
61
+
62
+ ```bash
63
+ rm -rf ~/.mona-agent ~/.local/bin/mona-agent
64
+ # optional: remove the PATH line added to ~/.zshrc / ~/.bashrc / ~/.profile
65
+ ```
66
+
67
+ ## Next steps
68
+
69
+ - [TOOLS.md](TOOLS.md) — what the agent can do on your device
70
+ - [ARCHITECTURE.md](ARCHITECTURE.md) — how the daemon works under the hood
71
+ - [FAQ.md](FAQ.md) — common questions
72
+ - [SECURITY.md](../SECURITY.md) — security model & responsible disclosure
docs/TOOLS.md ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Tools Reference
2
+
3
+ The built-in tools give the cloud agent real hands on your machine. Each tool
4
+ runs in a sandbox with clear boundaries.
5
+
6
+ ## files
7
+
8
+ File operations confined to safe paths.
9
+
10
+ | Operation | Notes |
11
+ |---|---|
12
+ | `list` | Directory listing with sizes and mtimes |
13
+ | `read` | Read text files (size-capped) |
14
+ | `write` | Write text files (atomic) |
15
+ | `move` / `delete` | Rename / remove within allowed paths |
16
+
17
+ **Safety:** the tool refuses to touch paths outside the allowed roots
18
+ (home, workspace, temp). Symlink escapes are rejected.
19
+
20
+ ## shell
21
+
22
+ A guarded, allowlisted command shell.
23
+
24
+ - Commands run through an allowlist of safe patterns (`ls`, `cat`, `df`,
25
+ `uptime`, …); anything matching a dangerous pattern (`rm -rf /`,
26
+ fork bombs, `sudo` without confirmation) is **blocked before execution**.
27
+ - Output is streamed back line-buffered, so the dashboard log feels live.
28
+ - Each execution is logged and attached to the audit trail in the cloud.
29
+
30
+ Example the agent might run:
31
+
32
+ ```bash
33
+ df -h / && du -sh ~/Downloads | sort -h | tail -5
34
+ ```
35
+
36
+ ## net
37
+
38
+ Network helpers for connectivity checks and HTTP.
39
+
40
+ | Helper | Use |
41
+ |---|---|
42
+ | `http` | GET/POST JSON requests (outbound only) |
43
+ | `ping` / `reachable` | Host / port reachability |
44
+ | `dns` | DNS lookups |
45
+ | `wake` | (LAN) wake-on-LAN helper, where supported |
46
+
47
+ Used by the cloud agent for health checks, webhooks and diagnostics.
48
+
49
+ ## sysinfo
50
+
51
+ System metrics for the live device dashboard.
52
+
53
+ | Metric | Snapshot interval |
54
+ |---|---|
55
+ | CPU usage % | every 10 s |
56
+ | Load average (1/5/15) | every 10 s |
57
+ | Memory total / used / % | every 10 s |
58
+ | Disk usage % | every 10 s |
59
+ | Uptime | every 10 s |
60
+ | Hostname, platform, arch, CPU model, cores, version, IP | on connect |
61
+
62
+ The cloud keeps the latest snapshot plus a rolling 180-point history per
63
+ device and renders sparklines for CPU and memory in the dashboard.
64
+
65
+ ## Adding your own tool
66
+
67
+ Tools live in `apps/desktop/src/tools/` and are plain ES modules. Each tool
68
+ exposes a `run(action, args)` and registers itself in
69
+ `src/tools/index.js`. Keep the same rules: validate input, never execute
70
+ untrusted data, and always stream results.
docs/_config.yml ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # GitHub Pages config for the docs site (optional)
2
+ # Enable in repo Settings → Pages → Source: main /docs to publish
3
+ # at https://monaexpert.github.io/agent/
4
+ title: mona-agent — cloud-brained AI agent for your device
5
+ description: >-
6
+ Open-source AI agent daemon for macOS, Linux and WSL2. Chat with your
7
+ computer from anywhere, run commands, manage files, stream live metrics
8
+ to your dashboard. One command install, free forever, MIT licensed.
9
+ url: "https://agent.mona.expert"
10
+ github_username: MONAEXPERT
11
+ theme: jekyll-theme-minimal
docs/index.md ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # mona-agent Documentation
2
+
3
+ Open-source cloud-brained AI agent for your device — macOS, Linux, WSL2.
4
+
5
+ - [Getting started](GETTING-STARTED.md) — install in 60 seconds
6
+ - [Architecture](ARCHITECTURE.md) — how the daemon works
7
+ - [Tools reference](TOOLS.md) — files, shell, net, sysinfo
8
+ - [FAQ](FAQ.md) — common questions
9
+ - [Changelog](CHANGELOG.md) — release history
10
+ - [Security](../SECURITY.md) — security model & disclosure
11
+ - [Contributing](../CONTRIBUTING.md) — development setup
12
+
13
+ **Cloud:** [agent.mona.expert](https://agent.mona.expert) ·
14
+ **Repo:** [MONAEXPERT/agent](https://github.com/MONAEXPERT/agent)