Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
14 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,10 @@ demo/memcell_outputs/

# macOS
.DS_Store

# AI agent tooling (local agent skills/config, not part of the project)
.agents/
AGENTS.md
*.duckdb


Expand Down
20 changes: 12 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,16 +122,20 @@ Run this before configuring API keys or starting the server:
everos demo
```

The command asks for one memory and one recall question, then opens a
full-screen terminal UI. This is an educational visualizer: it is hardcoded,
local to the CLI, and does not connect to the EverOS server. Its job is to make
the memory lifecycle visible: conversation -> memory sphere -> recall -> source
proof -> confetti. See [docs/everos-demo.md](docs/everos-demo.md) for the demo
scope and TUI source layout.
The full-screen terminal UI has an input box: type a memory, then a recall
question, directly in the UI. Each round runs the real memory pipeline against
[EverOS Cloud](https://everos.evermind.ai) (keys and storage live on the
platform, so you need no local keys), and the panels follow your own input:
conversation -> memory sphere ->
recall -> source proof -> confetti. See
[docs/everos-demo.md](docs/everos-demo.md) for the demo scope and TUI source
layout.

The sphere moves through ingest, extraction, indexing, recall, source reveal,
and a confetti burst after the first memory lands. Press `r` to replay and `q`
to quit.
and a confetti burst after the first memory lands. Type `/` to see the
commands (`/replay`, `/live`, `/quit`); `ctrl+c` exits anytime. After a few
rounds the demo points you at configuring your own keys (`everos init`, then
`everos demo --live`).

<p align="center">
<img src="https://gist.githubusercontent.com/cyfyifanchen/afa2cf40bf138a3ec96d917e8f2791a2/raw/d4ce82a6ddd7b3ebaf221e4825af993aeca5a7ce/everos-demo-tui-animation.svg" alt="Animated EverOS demo preview showing the memory sphere moving through recall and confetti states" width="720">
Expand Down
12 changes: 7 additions & 5 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,15 +124,17 @@ uv pip install everos
everos demo
```

这个命令会询问一条记忆和一个召回问题,然后打开一个全屏 terminal UI。
这是一个 educational visualizer:它是 hardcoded 的,只在 CLI 本地运行,
不会连接 EverOS server。它的作用是把 memory lifecycle 变成可感知的过程:
全屏 terminal UI 里带有一个输入框:你直接在 UI 里输入一条记忆,再输入一个
召回问题。每一轮都会对 [EverOS Cloud](https://everos.evermind.ai) 跑真实的
memory pipeline(key 和存储都在平台侧,本地无需任何 API keys),各面板跟着
你自己的输入更新:
conversation -> memory sphere -> recall -> source proof -> confetti。Demo
范围和 TUI 代码结构见 [docs/everos-demo.md](docs/everos-demo.md)。

Sphere 会经历 ingest、extraction、indexing、recall、source reveal,
并在第一条记忆落地后进入 confetti successful moment。按 `r` 可以 replay,
按 `q` 可以退出。
并在第一条记忆落地后进入 confetti successful moment。输入 `/` 可以查看可用命令
(`/replay`、`/live`、`/quit`);`ctrl+c` 随时退出。几轮之后,demo 会引导你去
配置自己的 key(`everos init`,然后 `everos demo --live`)。

<p align="center">
<img src="https://gist.githubusercontent.com/cyfyifanchen/afa2cf40bf138a3ec96d917e8f2791a2/raw/d4ce82a6ddd7b3ebaf221e4825af993aeca5a7ce/everos-demo-tui-animation.svg" alt="Animated EverOS demo preview showing the memory sphere moving through recall and confetti states" width="720">
Expand Down
69 changes: 36 additions & 33 deletions docs/everos-demo.md
Original file line number Diff line number Diff line change
@@ -1,57 +1,59 @@
# EverOS Demo

`everos demo` is a local educational TUI. It helps new users feel the memory
lifecycle before they configure API keys, start the server, or write real
memory through the API.
`everos demo` is an interactive TUI that lets new users feel the memory
lifecycle — type a memory, ask for it back, watch EverOS recall it — before they
configure their own API keys.

## Run It

```bash
everos demo
```

The command asks for one memory and one recall question, then opens a
full-screen terminal UI. The visual flow is deterministic and local to the CLI:
conversation -> memory sphere -> recall -> source proof -> confetti.
This opens a full-screen terminal UI with an input box. You type a memory and a
recall question directly in the UI, and each round runs the **real** memory
pipeline against [EverOS Cloud](https://everos.evermind.ai) (`https://api.evermind.ai`):
`POST /api/v1/memories` -> `POST /api/v1/memories/flush` ->
`POST /api/v1/memories/search`. The panels follow your own input: conversation
-> memory sphere -> recall -> source proof -> confetti.

For non-interactive shells or a copyable preview, use:
EverOS Cloud holds all model keys and manages storage, so the demo needs only a
single platform API key — no server to deploy, no model keys locally. Each run
uses a fresh, isolated `(session_id, user_id)` pair, so demo visitors never see
each other's memories.

```bash
everos demo --plain
```

For the looping showroom view used by README media, use:
The demo key is read from the `EVEROS_CLOUD_DEMO_KEY` environment variable (a
restricted, shippable key can be baked in later). If no key is set, the key is
rejected, or the quota is exhausted, the UI says so and points you at
configuring your own key — it never fakes a result.

```bash
everos demo --cinematic
```
The endpoint can be overridden with `EVEROS_CLOUD_DEMO_URL` (or `--server-url`).

## Run It Against A Server
## Run It With Your Own Cloud Key

After `everos init` and `everos server start`, run:
Get a key from <https://everos.evermind.ai/api-keys>, then:

```bash
export EVEROS_CLOUD_API_KEY=<your-key>
everos demo --live
```

Live mode keeps the same TUI, but the memory lifecycle is backed by real
server calls:
`--live` runs the same flow against the same platform, just authenticated with
your own key instead of the restricted demo key.

1. `GET /health`
2. `POST /api/v1/memory/add`
3. `POST /api/v1/memory/flush`
4. `POST /api/v1/memory/search`
## Static Previews

If your server is not running on `http://127.0.0.1:8000`, pass
`--server-url <url>`.
For non-interactive shells or a copyable preview (no input box, no network):

## What It Does Not Do
```bash
everos demo --plain
```

For the looping showroom view used by README media:

By default, `everos demo` does not connect to the EverOS server, call LLM
providers, or write production memory files. It is intentionally hardcoded so
users can try the experience before configuring the full runtime. Use
`everos demo --live` when you want the same visual flow backed by a running
server.
```bash
everos demo --cinematic
```

## Source Layout

Expand All @@ -60,8 +62,9 @@ because the public command is still `everos demo`.

The TUI implementation lives under `src/everos/entrypoints/tui/demo/`:

- `app.py` renders the Textual app.
- `data.py` builds the deterministic demo story.
- `app.py` renders the Textual app and drives the interactive rounds.
- `cloud.py` is the EverOS Cloud HTTP client (`add -> flush -> search`).
- `data.py` holds the static showcase story for `--plain` / `--cinematic`.
- `widgets/sphere.py` builds the memory sphere frames.
- `readme_media.py` renders README media.

Expand Down
11 changes: 10 additions & 1 deletion src/everos/component/tokenizer/jieba_provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,19 @@

from __future__ import annotations

import warnings
from collections.abc import Sequence
from typing import Final

import jieba
with warnings.catch_warnings():
# jieba 0.42.1 (its last release; unmaintained) ships regex string
# literals with invalid escape sequences. Python >= 3.12 flags these as
# SyntaxWarning at first-import compile time (before the .pyc is cached),
# leaking noise on a user's first run. The warnings are harmless and out
# of our control, so we suppress them at the single jieba import site.
# See https://github.com/EverMind-AI/EverOS/issues/304.
warnings.simplefilter("ignore", SyntaxWarning)
import jieba

# Small bilingual stopword set. Intentionally tight (not a full
# Chinese stopword list) so the behaviour is predictable; callers
Expand Down
Loading
Loading