neoagent 2.4.4-beta.8 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +17 -0
- package/README.md +64 -57
- package/docs/agent-run-lifecycle.md +65 -0
- package/docs/agents-and-users.md +48 -0
- package/docs/architecture.md +59 -0
- package/docs/automation-architecture.md +50 -0
- package/docs/automation.md +54 -70
- package/docs/capabilities.md +16 -118
- package/docs/clients-and-devices.md +43 -0
- package/docs/configuration.md +104 -116
- package/docs/development.md +82 -0
- package/docs/devices.md +62 -0
- package/docs/getting-started.md +47 -57
- package/docs/index.md +41 -30
- package/docs/integrations-architecture.md +48 -0
- package/docs/integrations.md +56 -51
- package/docs/memory-architecture.md +90 -0
- package/docs/memory.md +78 -0
- package/docs/migration.md +12 -5
- package/docs/models.md +64 -0
- package/docs/operations.md +46 -30
- package/docs/persistence.md +49 -0
- package/docs/recordings-and-health.md +41 -0
- package/docs/runtime-and-tools.md +52 -0
- package/docs/security-boundaries.md +65 -111
- package/docs/skills.md +32 -45
- package/docs/why-neoagent.md +47 -16
- package/flutter_app/lib/main_account_settings.dart +79 -15
- package/flutter_app/lib/main_chat.dart +155 -8
- package/flutter_app/lib/main_controller.dart +38 -4
- package/flutter_app/lib/main_devices.dart +9 -3
- package/flutter_app/lib/main_models.dart +32 -0
- package/landing/index.html +0 -4
- package/lib/install_helpers.js +1 -0
- package/lib/manager.js +63 -1
- package/package.json +2 -2
- package/server/admin/admin.js +151 -0
- package/server/admin/index.html +55 -3
- package/server/public/.last_build_id +1 -1
- package/server/public/flutter_bootstrap.js +1 -1
- package/server/public/main.dart.js +50995 -50850
- package/server/routes/account.js +2 -23
- package/server/routes/admin.js +18 -2
- package/server/routes/agents.js +5 -1
- package/server/routes/memory.js +2 -2
- package/server/services/account/service_email_settings.js +167 -0
- package/server/services/ai/engine.js +2 -17
- package/server/services/ai/rate_limits.js +150 -0
- package/server/services/ai/tools.js +11 -8
- package/server/services/memory/manager.js +0 -3
- package/server/services/websocket.js +5 -1
- package/docs/supermemory-memory-review.md +0 -852
package/docs/getting-started.md
CHANGED
|
@@ -1,89 +1,79 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Installation
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
NeoAgent supports macOS and Linux hosts. It installs as a long-running service,
|
|
4
|
+
so use a machine that remains online when you expect automations, messaging, or
|
|
5
|
+
remote access to work.
|
|
4
6
|
|
|
5
7
|
## Requirements
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
| AI provider key | Anthropic, OpenAI, Gemini, Grok, MiniMax, or local Ollama |
|
|
9
|
+
- Node.js 20 or newer with npm
|
|
10
|
+
- A macOS or Linux user account that can install packages
|
|
11
|
+
- Enough disk and memory for the models and runtime you choose
|
|
12
|
+
- QEMU for the isolated browser and terminal runtime
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
### Optional manual QEMU install
|
|
16
|
-
|
|
17
|
-
`neoagent install` tries to install QEMU on supported macOS and Linux package
|
|
18
|
-
managers. If the machine does not have a supported package manager yet, install
|
|
19
|
-
QEMU manually and rerun `neoagent install`.
|
|
14
|
+
The installer attempts to install QEMU with Homebrew, `apt`, `dnf`, or `yum`.
|
|
15
|
+
If the host uses another package manager, install QEMU first.
|
|
20
16
|
|
|
21
17
|
```bash
|
|
22
18
|
# macOS
|
|
23
19
|
brew install qemu
|
|
24
20
|
|
|
25
|
-
# Ubuntu
|
|
26
|
-
sudo apt-get update
|
|
21
|
+
# Ubuntu or Debian
|
|
22
|
+
sudo apt-get update
|
|
23
|
+
sudo apt-get install -y qemu-system qemu-utils
|
|
27
24
|
```
|
|
28
25
|
|
|
29
|
-
## Install
|
|
26
|
+
## Install NeoAgent
|
|
30
27
|
|
|
31
28
|
```bash
|
|
32
29
|
npm install -g neoagent
|
|
33
30
|
neoagent install
|
|
34
31
|
```
|
|
35
32
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
Open **http://localhost:3333** in your browser when the install finishes.
|
|
33
|
+
`neoagent install` checks the host, creates the runtime configuration, installs
|
|
34
|
+
application dependencies and supported system tools, prepares the isolated
|
|
35
|
+
runtime, and registers a launchd or systemd user service when available.
|
|
41
36
|
|
|
42
|
-
|
|
37
|
+
Read the post-install actions printed by the command. They describe anything
|
|
38
|
+
the installer could not complete automatically.
|
|
43
39
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
3. Send a message in **Chat** to confirm the agent responds.
|
|
40
|
+
Open `http://localhost:3333` on the server. For remote access, configure HTTPS
|
|
41
|
+
and `PUBLIC_URL` before connecting integrations or mobile clients.
|
|
47
42
|
|
|
48
|
-
|
|
43
|
+
## First run
|
|
49
44
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
neoagent restart
|
|
57
|
-
neoagent logs # first stop when something behaves unexpectedly
|
|
58
|
-
```
|
|
45
|
+
1. Create the first user account.
|
|
46
|
+
2. Open **Settings > AI Providers**.
|
|
47
|
+
3. Configure a hosted provider or connect local Ollama.
|
|
48
|
+
4. Select a model and send a message in **Chat**.
|
|
49
|
+
5. Open **Settings > Tool Permissions** and review the approval policy before
|
|
50
|
+
enabling browser, shell, file-write, desktop, or Android actions.
|
|
59
51
|
|
|
60
|
-
|
|
52
|
+
The first isolated-runtime boot downloads and prepares an Ubuntu image. It can
|
|
53
|
+
take several minutes and is not required for a basic model-only chat.
|
|
61
54
|
|
|
62
|
-
|
|
55
|
+
## Check the installation
|
|
63
56
|
|
|
64
57
|
```bash
|
|
65
|
-
neoagent
|
|
58
|
+
neoagent status
|
|
59
|
+
neoagent logs
|
|
66
60
|
```
|
|
67
61
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
neoagent channel stable # switch to stable releases
|
|
74
|
-
neoagent channel beta # switch to prerelease builds
|
|
75
|
-
neoagent update # update to latest on the current channel
|
|
76
|
-
neoagent fix # reset after a broken install or self-edit
|
|
77
|
-
```
|
|
62
|
+
`status` reports the install path, configuration, release channel, service
|
|
63
|
+
state, and server health. Use `logs` on the machine running NeoAgent; logs from
|
|
64
|
+
another computer do not describe the remote server.
|
|
78
65
|
|
|
79
|
-
|
|
66
|
+
## Global npm permission errors
|
|
80
67
|
|
|
81
|
-
|
|
68
|
+
If `npm install -g` fails with `EACCES` on macOS, install Node through
|
|
69
|
+
[nvm](https://github.com/nvm-sh/nvm) so global packages live in your user
|
|
70
|
+
directory. Running the npm command with `sudo` also works, but makes later
|
|
71
|
+
package ownership harder to manage.
|
|
82
72
|
|
|
83
|
-
|
|
84
|
-
|---|---|
|
|
85
|
-
| `~/.neoagent/.env` | Server config and secrets |
|
|
86
|
-
| `~/.neoagent/data/` | Database, session data, logs |
|
|
87
|
-
| `~/.neoagent/agent-data/` | Skills, memory, daily data |
|
|
73
|
+
## Next steps
|
|
88
74
|
|
|
89
|
-
|
|
75
|
+
- [Configure models](models.md)
|
|
76
|
+
- [Create specialist agents](agents-and-users.md)
|
|
77
|
+
- [Connect accounts and messaging](integrations.md)
|
|
78
|
+
- [Set up automation](automation.md)
|
|
79
|
+
- [Review deployment security](security-boundaries.md)
|
package/docs/index.md
CHANGED
|
@@ -1,49 +1,60 @@
|
|
|
1
1
|
---
|
|
2
2
|
slug: /
|
|
3
|
-
title: NeoAgent
|
|
3
|
+
title: NeoAgent documentation
|
|
4
4
|
sidebar_label: Overview
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
<img src="/img/app_icon.png" width="72" alt="NeoAgent" />
|
|
9
|
-
</p>
|
|
7
|
+
# NeoAgent documentation
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
NeoAgent is a self-hosted AI agent that runs continuously on a macOS or Linux
|
|
10
|
+
server. It provides an operator interface for chat, automation, integrations,
|
|
11
|
+
memory, recordings, and connected devices.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
NeoAgent is beta software. Install it on a machine you administer, start with
|
|
14
|
+
restricted tool permissions, and read the security guide before connecting
|
|
15
|
+
sensitive accounts.
|
|
14
16
|
|
|
15
|
-
##
|
|
17
|
+
## 🚀 Start here
|
|
16
18
|
|
|
17
19
|
```bash
|
|
18
20
|
npm install -g neoagent
|
|
19
21
|
neoagent install
|
|
20
22
|
```
|
|
21
23
|
|
|
22
|
-
|
|
24
|
+
The installer starts the service and prints any host-specific action items.
|
|
25
|
+
Open `http://localhost:3333` when it finishes.
|
|
23
26
|
|
|
24
|
-
|
|
27
|
+
Continue with:
|
|
25
28
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
| **Control Android** | Screenshot, observe UI, tap, type, swipe, launch apps, install APKs, run `adb shell` |
|
|
31
|
-
| **Connect accounts** | Google Workspace, Microsoft 365, Notion, Slack, Figma, Home Assistant, Trello, Spotify |
|
|
32
|
-
| **Message anywhere** | Telegram, WhatsApp, Discord, Signal, Matrix, iMessage, Teams, Telnyx Voice, and more |
|
|
33
|
-
| **Record and transcribe** | Audio sessions from browser or Android, transcript search, AI-generated insights |
|
|
34
|
-
| **Remember** | Long-term semantic memory, session logs, core facts, daily summaries |
|
|
29
|
+
- [Install and complete the first run](getting-started.md)
|
|
30
|
+
- [Choose and configure a model](models.md)
|
|
31
|
+
- [Understand the security boundaries](security-boundaries.md)
|
|
32
|
+
- [Migrate from OpenClaw or Hermes](migration.md)
|
|
35
33
|
|
|
36
|
-
##
|
|
34
|
+
## 🧭 User guide
|
|
37
35
|
|
|
38
|
-
| | |
|
|
36
|
+
| Guide | Use it for |
|
|
39
37
|
|---|---|
|
|
40
|
-
| [
|
|
41
|
-
| [
|
|
42
|
-
| [
|
|
43
|
-
| [
|
|
44
|
-
| [
|
|
45
|
-
| [Integrations](integrations.md) |
|
|
46
|
-
| [
|
|
47
|
-
| [
|
|
48
|
-
| [
|
|
49
|
-
| [
|
|
38
|
+
| [Installation](getting-started.md) | Host requirements, installation, first run |
|
|
39
|
+
| [Models](models.md) | Local, API-key, and account-backed model providers |
|
|
40
|
+
| [Agents and users](agents-and-users.md) | Specialist agents and multi-user administration |
|
|
41
|
+
| [Automation](automation.md) | Schedules, event triggers, delivery, and run history |
|
|
42
|
+
| [Memory](memory.md) | What NeoAgent remembers and how to manage it |
|
|
43
|
+
| [Integrations](integrations.md) | Connected app accounts and messaging channels |
|
|
44
|
+
| [Devices and interfaces](devices.md) | Android, desktop, Chrome, launcher, and wearable surfaces |
|
|
45
|
+
| [Recordings and health](recordings-and-health.md) | Audio transcription and Health Connect |
|
|
46
|
+
| [Skills and MCP](skills.md) | Reusable instructions and external tool servers |
|
|
47
|
+
| [Operations](operations.md) | Updates, backups, logs, and recovery |
|
|
48
|
+
| [Configuration](configuration.md) | Environment and runtime reference |
|
|
49
|
+
| [Why NeoAgent](why-neoagent.md) | Factual comparison with OpenClaw and Hermes |
|
|
50
|
+
|
|
51
|
+
## 🛠️ Developer guide
|
|
52
|
+
|
|
53
|
+
The developer guide explains the implementation rather than the product setup.
|
|
54
|
+
Start with [Architecture](architecture.md), then follow the subsystem links in
|
|
55
|
+
the developer section of the sidebar.
|
|
56
|
+
|
|
57
|
+
Contributors must also follow
|
|
58
|
+
[GUIDELINES.md](https://github.com/NeoLabs-Systems/NeoAgent/blob/main/GUIDELINES.md)
|
|
59
|
+
and
|
|
60
|
+
[CONTRIBUTING.md](https://github.com/NeoLabs-Systems/NeoAgent/blob/main/CONTRIBUTING.md).
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Integrations and messaging architecture
|
|
2
|
+
|
|
3
|
+
Official integrations and messaging channels are separate service families.
|
|
4
|
+
They can expose the same external product while using different credentials
|
|
5
|
+
and data paths.
|
|
6
|
+
|
|
7
|
+
## Integration registry
|
|
8
|
+
|
|
9
|
+
The integration registry loads provider implementations. A provider describes
|
|
10
|
+
its applications, environment readiness, connection flow, tool definitions,
|
|
11
|
+
access modes, and optional memory-ingestion support.
|
|
12
|
+
|
|
13
|
+
OAuth state is short-lived and server-stored. Connection credentials are
|
|
14
|
+
encrypted before they are written to SQLite. Refresh responses are merged with
|
|
15
|
+
existing credentials so providers that omit a new refresh token do not erase
|
|
16
|
+
the durable token.
|
|
17
|
+
|
|
18
|
+
Connections are scoped by user, agent, provider, and account. Read-only access
|
|
19
|
+
is enforced when the integration tool is executed, not through prompt wording.
|
|
20
|
+
|
|
21
|
+
## Tool execution
|
|
22
|
+
|
|
23
|
+
Integration tools join the agent tool catalog when the owning agent has a
|
|
24
|
+
usable connection. The integration manager resolves the connection, refreshes
|
|
25
|
+
credentials when required, enforces access mode, invokes the provider, and
|
|
26
|
+
persists updated credentials.
|
|
27
|
+
|
|
28
|
+
## Memory ingestion
|
|
29
|
+
|
|
30
|
+
Providers that support background memory expose source collectors. The
|
|
31
|
+
ingestion service creates durable jobs, fetches changed source objects, stores
|
|
32
|
+
source documents, chunks content, and links extracted memory back to those
|
|
33
|
+
chunks.
|
|
34
|
+
|
|
35
|
+
Provider snapshots shown in the client are decorated with ingestion coverage
|
|
36
|
+
and status.
|
|
37
|
+
|
|
38
|
+
## Messaging
|
|
39
|
+
|
|
40
|
+
Messaging providers are long-running channel adapters managed separately from
|
|
41
|
+
official integrations. They normalize inbound messages, enforce chat and
|
|
42
|
+
sender allowlists, create agent runs, send typing state, and deliver outbound
|
|
43
|
+
messages.
|
|
44
|
+
|
|
45
|
+
Webhook-backed channels enter through shared HTTP routes. Native adapters can
|
|
46
|
+
maintain sockets, polling loops, or provider-specific sessions. Personal
|
|
47
|
+
WhatsApp integration credentials remain separate from the WhatsApp messaging
|
|
48
|
+
bridge.
|
package/docs/integrations.md
CHANGED
|
@@ -1,66 +1,71 @@
|
|
|
1
|
-
# Integrations
|
|
1
|
+
# Integrations and messaging
|
|
2
2
|
|
|
3
|
-
NeoAgent has two
|
|
3
|
+
NeoAgent has two connection layers with different purposes.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**Integrations** give the agent structured tools for an account. **Messaging
|
|
6
|
+
channels** let people talk to the agent and receive automation results.
|
|
7
|
+
Connecting Slack or WhatsApp in one layer does not automatically configure the
|
|
8
|
+
other.
|
|
6
9
|
|
|
7
|
-
|
|
10
|
+
## Official integrations
|
|
8
11
|
|
|
9
|
-
|
|
12
|
+
Connect accounts in **Integrations**.
|
|
13
|
+
|
|
14
|
+
| Provider | Available areas |
|
|
10
15
|
|---|---|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
|
20
|
-
|
|
|
16
|
+
| Google Workspace | Gmail, Calendar, Drive, Docs, Sheets |
|
|
17
|
+
| Microsoft 365 | Outlook, Calendar, OneDrive, Teams |
|
|
18
|
+
| GitHub | Repositories, issues, pull requests, files, branches, workflows |
|
|
19
|
+
| Notion | Pages, databases, blocks, search |
|
|
20
|
+
| Slack | Conversations, history, search, messages |
|
|
21
|
+
| Figma | Files, nodes, rendered images, comments |
|
|
22
|
+
| Home Assistant | Entity state and service calls |
|
|
23
|
+
| Trello | Boards, lists, cards, comments, search |
|
|
24
|
+
| Spotify | Playback, history, search, queue |
|
|
25
|
+
| Weather | Location search, current conditions, forecasts |
|
|
26
|
+
| Personal WhatsApp | Private account chat history and send tools |
|
|
21
27
|
|
|
22
|
-
|
|
28
|
+
Available operations are discovered from the current server implementation and
|
|
29
|
+
connected account. They may differ by provider permissions.
|
|
23
30
|
|
|
24
|
-
|
|
31
|
+
### Read-only accounts
|
|
25
32
|
|
|
26
|
-
|
|
33
|
+
Connected accounts can be set to **Read Only**. NeoAgent blocks their write
|
|
34
|
+
tools server-side. Use read-only mode unless an agent must create, send, update,
|
|
35
|
+
or delete data.
|
|
27
36
|
|
|
28
|
-
|
|
37
|
+
### Setup
|
|
29
38
|
|
|
30
|
-
|
|
39
|
+
Google, Microsoft, GitHub, Notion, Slack, Figma, and Spotify require OAuth
|
|
40
|
+
application credentials on the server. The default callback is:
|
|
31
41
|
|
|
32
|
-
|
|
42
|
+
```text
|
|
43
|
+
PUBLIC_URL/api/integrations/oauth/callback
|
|
44
|
+
```
|
|
33
45
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
2. Confirm the redirect URI in your OAuth app matches NeoAgent's callback URL
|
|
37
|
-
3. Confirm the client ID and secret are set in server config
|
|
38
|
-
4. Restart after changing environment variables: `neoagent restart`
|
|
46
|
+
Home Assistant and Trello can be configured for a user from the application.
|
|
47
|
+
See [Configuration](configuration.md#official-integrations).
|
|
39
48
|
|
|
40
|
-
## Messaging
|
|
49
|
+
## Messaging channels
|
|
41
50
|
|
|
42
|
-
|
|
51
|
+
Configure messaging under **Settings > Messaging**. Supported bridges include
|
|
52
|
+
WhatsApp, Telegram, Discord, Slack, Google Chat, Teams, Matrix, Signal,
|
|
53
|
+
iMessage through BlueBubbles, IRC, Twitch, LINE, Mattermost, Telnyx Voice, and
|
|
54
|
+
several webhook-backed services.
|
|
43
55
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
Inbound webhook path: `PUBLIC_URL + /api/messaging/webhook/:platform`
|
|
61
|
-
|
|
62
|
-
`TELNYX_WEBHOOK_TOKEN` is the only messaging credential that goes in `.env` — all others are configured through the app messaging tab.
|
|
63
|
-
|
|
64
|
-
## Security
|
|
65
|
-
|
|
66
|
-
Keep OAuth client secrets, bot tokens, and API keys on the server. Don't put them in skill files, task prompts, screenshots, or logs. Rotate immediately if a credential is exposed.
|
|
56
|
+
Each channel has its own authentication and allowlist behavior. Restrict which
|
|
57
|
+
chats, rooms, groups, and senders may start agent runs.
|
|
58
|
+
|
|
59
|
+
Webhook-based channels require a reachable `PUBLIC_URL`. The generic inbound
|
|
60
|
+
path is:
|
|
61
|
+
|
|
62
|
+
```text
|
|
63
|
+
PUBLIC_URL/api/messaging/webhook/:platform
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Troubleshooting
|
|
67
|
+
|
|
68
|
+
For failed OAuth connections, confirm the public URL, callback, client
|
|
69
|
+
credentials, and provider scopes. For messaging failures, inspect **Runs** and
|
|
70
|
+
server logs on the NeoAgent host, then verify the channel allowlist and webhook
|
|
71
|
+
reachability.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Memory architecture
|
|
2
|
+
|
|
3
|
+
NeoAgent memory separates source material, readable memories, structured
|
|
4
|
+
facts, and retrieval telemetry. The design keeps current facts useful while
|
|
5
|
+
retaining provenance and history.
|
|
6
|
+
|
|
7
|
+
## Data model
|
|
8
|
+
|
|
9
|
+
### Memories
|
|
10
|
+
|
|
11
|
+
`memories` stores the readable unit used for recall. Each row is scoped by user
|
|
12
|
+
and agent and includes category, source reference, importance, confidence,
|
|
13
|
+
summary, embedding metadata, archive state, and timestamps.
|
|
14
|
+
|
|
15
|
+
### Facts and relations
|
|
16
|
+
|
|
17
|
+
`memory_facts` stores atomic subject-predicate-object facts. Facts can have
|
|
18
|
+
event time, validity bounds, learned time, status, and a superseded fact ID.
|
|
19
|
+
|
|
20
|
+
`memory_relations` links memories with:
|
|
21
|
+
|
|
22
|
+
- `updates` for replacement;
|
|
23
|
+
- `extends` for compatible additional detail; and
|
|
24
|
+
- `derives` for supported inference.
|
|
25
|
+
|
|
26
|
+
When a new fact conflicts with an active fact for the same subject and
|
|
27
|
+
predicate, the previous fact is superseded unless the new fact is an extension
|
|
28
|
+
or derivation. External-source conflicts with stable or high-confidence facts
|
|
29
|
+
can be held for review.
|
|
30
|
+
|
|
31
|
+
### Sources and provenance
|
|
32
|
+
|
|
33
|
+
Integration ingestion stores source documents separately from memory.
|
|
34
|
+
Documents are split into position-aware chunks. `memory_source_links` connects
|
|
35
|
+
an extracted memory to its source chunk and document.
|
|
36
|
+
|
|
37
|
+
This keeps source evidence available without injecting complete documents into
|
|
38
|
+
every prompt.
|
|
39
|
+
|
|
40
|
+
## Ingestion
|
|
41
|
+
|
|
42
|
+
Conversation consolidation is a structured model pass after the run. It
|
|
43
|
+
extracts a bounded list of durable candidates and excludes secrets, routine
|
|
44
|
+
tool output, unsupported guesses, and thread-only details.
|
|
45
|
+
|
|
46
|
+
Integration ingestion runs through durable jobs with source cursors and
|
|
47
|
+
freshness metadata. Chunk extraction attempts are tracked so failed work can be
|
|
48
|
+
retried without treating incomplete content as processed.
|
|
49
|
+
|
|
50
|
+
## Retrieval
|
|
51
|
+
|
|
52
|
+
The local candidate stage combines:
|
|
53
|
+
|
|
54
|
+
- Approximate semantic candidates from embedding bands
|
|
55
|
+
- SQLite full-text and lexical matches
|
|
56
|
+
- Entity mentions
|
|
57
|
+
- Memory relations
|
|
58
|
+
- Importance, confidence, freshness, and access signals
|
|
59
|
+
|
|
60
|
+
Superseded and expired facts are excluded from normal current recall. Selected
|
|
61
|
+
results can include a bounded version-history note and source location.
|
|
62
|
+
|
|
63
|
+
When the top result is missing, weak, or ambiguous, the AI engine can generate
|
|
64
|
+
query variants and temporal intent, merge the resulting candidates, and rerank
|
|
65
|
+
only those candidates. Confident retrieval avoids this additional model call.
|
|
66
|
+
|
|
67
|
+
Retrieval events record candidate counts, result IDs, estimated context size,
|
|
68
|
+
and latency. Enhancement events record why planning was used and which results
|
|
69
|
+
survived.
|
|
70
|
+
|
|
71
|
+
## Prompt context
|
|
72
|
+
|
|
73
|
+
Memory reaches the model through three bounded paths:
|
|
74
|
+
|
|
75
|
+
1. Core memory for explicit always-relevant values
|
|
76
|
+
2. An auto-maintained static and dynamic profile built from active facts
|
|
77
|
+
3. Query-specific recalled memories
|
|
78
|
+
|
|
79
|
+
All paths are scoped to the selected user and agent. Subagents receive the
|
|
80
|
+
agent scope supplied by their parent run.
|
|
81
|
+
|
|
82
|
+
## Privacy and trust
|
|
83
|
+
|
|
84
|
+
Memory remains in NeoAgent storage, but hosted models and embedding providers
|
|
85
|
+
receive the text sent to them. External source content is marked as untrusted
|
|
86
|
+
data in recalled context.
|
|
87
|
+
|
|
88
|
+
Memory quality claims require reproducible evaluation. The repository includes
|
|
89
|
+
retrieval evaluation and benchmark tooling, but the documentation does not
|
|
90
|
+
claim parity or superiority based on architecture alone.
|
package/docs/memory.md
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Memory
|
|
2
|
+
|
|
3
|
+
NeoAgent keeps useful context across conversations without treating the entire
|
|
4
|
+
chat transcript as permanent memory. Memory data is stored by the NeoAgent
|
|
5
|
+
server and scoped to a user and agent.
|
|
6
|
+
|
|
7
|
+
## What gets remembered
|
|
8
|
+
|
|
9
|
+
After a conversation, the model can extract durable information such as:
|
|
10
|
+
|
|
11
|
+
- Identity and stable preferences
|
|
12
|
+
- Ongoing projects and responsibilities
|
|
13
|
+
- Important contacts and relationships
|
|
14
|
+
- Events with meaningful dates
|
|
15
|
+
- Current context that will matter in a later conversation
|
|
16
|
+
|
|
17
|
+
Routine tool output, credentials, guesses, and one-off task narration should
|
|
18
|
+
not become long-term memory. The agent can also save an explicit fact with its
|
|
19
|
+
memory tool when a conversation requires it.
|
|
20
|
+
|
|
21
|
+
## Structured facts
|
|
22
|
+
|
|
23
|
+
A saved memory contains readable text plus structured facts. A fact records a
|
|
24
|
+
subject, relationship, value, category, confidence, and optional time bounds.
|
|
25
|
+
New information can:
|
|
26
|
+
|
|
27
|
+
- update and supersede an older fact;
|
|
28
|
+
- extend an existing fact with compatible detail; or
|
|
29
|
+
- record a supported inference at lower confidence.
|
|
30
|
+
|
|
31
|
+
Normal recall favors active facts and excludes superseded or expired facts.
|
|
32
|
+
Historical queries can still use version context when it is relevant.
|
|
33
|
+
|
|
34
|
+
## Retrieval
|
|
35
|
+
|
|
36
|
+
NeoAgent combines several local signals:
|
|
37
|
+
|
|
38
|
+
- Semantic similarity when embeddings are configured
|
|
39
|
+
- SQLite full-text and lexical matching
|
|
40
|
+
- Entity matches
|
|
41
|
+
- Fact relationships and current-version status
|
|
42
|
+
- Importance, confidence, freshness, and prior use
|
|
43
|
+
|
|
44
|
+
Confident results use this local fast path. Ambiguous retrieval can ask the
|
|
45
|
+
configured model to reformulate the search and rerank known candidates. The
|
|
46
|
+
model does not receive unrestricted access to the database.
|
|
47
|
+
|
|
48
|
+
Stable facts and current context also form a bounded user profile that is
|
|
49
|
+
available to the owning agent even when a narrow search would not retrieve it.
|
|
50
|
+
|
|
51
|
+
## Integration memory
|
|
52
|
+
|
|
53
|
+
Supported integrations can ingest source documents in the background. Source
|
|
54
|
+
content is chunked, indexed, and linked to extracted memories so recalled
|
|
55
|
+
context can retain provenance.
|
|
56
|
+
|
|
57
|
+
External source text is treated as data rather than instructions. Conflicts
|
|
58
|
+
with high-confidence or stable memories may require review instead of silently
|
|
59
|
+
replacing the existing fact.
|
|
60
|
+
|
|
61
|
+
## Manage memory
|
|
62
|
+
|
|
63
|
+
Open **Memory** to search and inspect stored items. NeoAgent supports editing,
|
|
64
|
+
archiving, bulk deletion, permanent deletion, core-memory management, and
|
|
65
|
+
conversation search.
|
|
66
|
+
|
|
67
|
+
Deleting a conversation is not the same as deleting extracted memory. Review
|
|
68
|
+
both areas when removing personal information.
|
|
69
|
+
|
|
70
|
+
## Storage and privacy
|
|
71
|
+
|
|
72
|
+
Memory is stored in NeoAgent's SQLite database and runtime data directories.
|
|
73
|
+
It is not sent to an external memory service. Content still leaves the server
|
|
74
|
+
when a hosted model or hosted embedding provider is used to process it.
|
|
75
|
+
|
|
76
|
+
Back up `~/.neoagent/data/` and `~/.neoagent/agent-data/` together. See
|
|
77
|
+
[Memory architecture](memory-architecture.md) for the implementation and
|
|
78
|
+
[Operations](operations.md) for backup guidance.
|
package/docs/migration.md
CHANGED
|
@@ -6,7 +6,9 @@ sidebar_label: Migration
|
|
|
6
6
|
|
|
7
7
|
# Migration Guide
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
NeoAgent can copy supported files and selected configuration from a default
|
|
10
|
+
OpenClaw or Hermes installation. Run a dry run first and review imported
|
|
11
|
+
content before using it with an agent.
|
|
10
12
|
|
|
11
13
|
## Quick Start
|
|
12
14
|
|
|
@@ -16,12 +18,12 @@ neoagent migrate dry-run # preview what would be migrated
|
|
|
16
18
|
neoagent migrate status # check what's detected
|
|
17
19
|
```
|
|
18
20
|
|
|
19
|
-
## What
|
|
21
|
+
## What gets migrated
|
|
20
22
|
|
|
21
23
|
| Data | OpenClaw source | Hermes source | Destination |
|
|
22
24
|
|---|---|---|---|
|
|
23
25
|
| Skills | `~/.openclaw/skills/*.md` | `~/.hermes/skills/*.md` | `~/.neoagent/agent-data/skills/openclaw-imports/` or `hermes-imports/` |
|
|
24
|
-
| Memory | `SOUL.md`, `MEMORY.md`, `USER.md` | `MEMORY.md`, `USER.md` | `~/.neoagent/agent-data/memory/openclaw/` or `hermes/` |
|
|
26
|
+
| Memory files | `SOUL.md`, `MEMORY.md`, `USER.md` | `MEMORY.md`, `USER.md` | `~/.neoagent/agent-data/memory/openclaw/` or `hermes/` |
|
|
25
27
|
| API keys | from `.env` | from `.env` | merged into `~/.neoagent/.env` |
|
|
26
28
|
|
|
27
29
|
## Prerequisites
|
|
@@ -113,13 +115,18 @@ Choice [1]:
|
|
|
113
115
|
|
|
114
116
|
`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `XAI_API_KEY`, `GOOGLE_AI_KEY`, `MINIMAX_API_KEY`, `BRAVE_SEARCH_API_KEY`, `DEEPGRAM_API_KEY`, `TELEGRAM_BOT_TOKEN`, `OPENROUTER_API_KEY`, `ELEVENLABS_API_KEY`, `SLACK_BOT_TOKEN`, `DISCORD_BOT_TOKEN`
|
|
115
117
|
|
|
116
|
-
|
|
118
|
+
Imported Markdown is preserved as source material. Copying it does not turn
|
|
119
|
+
every line into a verified structured memory fact. Review it for stale,
|
|
120
|
+
conflicting, or sensitive information.
|
|
121
|
+
|
|
122
|
+
## Post-migration steps
|
|
117
123
|
|
|
118
124
|
1. `neoagent status` — verify the installation
|
|
119
125
|
2. `neoagent start` — start the server
|
|
120
126
|
3. Review imported skills in `~/.neoagent/agent-data/skills/openclaw-imports/` and `hermes-imports/`
|
|
121
127
|
4. Review imported memory in `~/.neoagent/agent-data/memory/`
|
|
122
|
-
5. Reconfigure messaging channels in the NeoAgent UI
|
|
128
|
+
5. Reconfigure messaging channels and official integrations in the NeoAgent UI
|
|
129
|
+
6. Test recall with non-sensitive facts before relying on imported memory
|
|
123
130
|
|
|
124
131
|
## Troubleshooting
|
|
125
132
|
|