-# Personal AI Profile
+# NEXORA(知序)
-### Your Personal Intelligence Layer
+### Your Intelligence. Your Data. Your Control.
-**A local-first, model-agnostic workspace for personal context, confirmed memory, reflection, and permission-controlled AI access.**
+**An open-source, local-first Personal Intelligence Platform for confirmed memory, reflection, knowledge and permission-controlled AI access.**
-[](https://github.com/XY-code1/personal-ai-profile/actions/workflows/test.yml)
-[](https://github.com/XY-code1/personal-ai-profile/releases)
+[](https://github.com/XY-code1/Nexora/actions/workflows/test.yml)
+[](https://github.com/XY-code1/Nexora/releases)
[](LICENSE)
[](#architecture)
[](#mcp-gateway)
[English](#overview) · [中文](#中文概览) · [Quick Start](#quick-start) · [Security](#privacy-and-security) · [Documentation](#documentation)
-
+
@@ -22,7 +22,7 @@
## Overview
-Personal AI Profile creates a user-owned context layer that can be shared across Codex, Claude, Cursor, and other MCP-compatible AI clients.
+NEXORA(知序), formerly developed under the project name Personal AI Profile, creates a user-owned intelligence layer that can be shared across Codex, Claude, Cursor, and other MCP-compatible AI clients.
Your private data remains in a local Markdown Vault. AI clients may read only what you explicitly authorize. They can propose candidate memories, but they cannot silently convert a conversation into permanent memory.
@@ -48,7 +48,7 @@ Personal context is fragmented across AI products:
- copying entire conversations creates unnecessary privacy exposure;
- maintaining a large profile form by hand feels like work.
-Personal AI Profile separates the **experience of conversation** from the **authority of memory**.
+NEXORA separates the **experience of conversation** from the **authority of memory**.
## Product
@@ -285,7 +285,7 @@ Security foundations include loopback-only serving, bearer sessions, trusted-hos
### Windows
-Use the installer from [GitHub Releases](https://github.com/XY-code1/personal-ai-profile/releases) when available, or run:
+Use the installer from [GitHub Releases](https://github.com/XY-code1/Nexora/releases) when available, or run:
```text
start-review.vbs
@@ -302,8 +302,8 @@ Requirements:
- Git
```powershell
-git clone https://github.com/XY-code1/personal-ai-profile.git
-cd personal-ai-profile
+git clone https://github.com/XY-code1/Nexora.git
+cd Nexora
python -m pip install -r requirements.txt
@@ -356,6 +356,10 @@ Tests use temporary synthetic Vaults. They must never read or copy a real privat
| Topic | Document |
| --- | --- |
+| Brand guidelines | [BRAND_GUIDELINES.md](docs/brand/BRAND_GUIDELINES.md) |
+| Logo specification | [LOGO_SPECIFICATION.md](docs/brand/LOGO_SPECIFICATION.md) |
+| Brand assets | [BRAND_ASSET_CATALOG.md](docs/brand/BRAND_ASSET_CATALOG.md) |
+| Product identity | [PRODUCT_IDENTITY.md](docs/brand/PRODUCT_IDENTITY.md) |
| Product architecture | [PRODUCT_ARCHITECTURE.md](docs/PRODUCT_ARCHITECTURE.md) |
| Vault lifecycle | [VAULT_LIFECYCLE_PLAN.md](docs/VAULT_LIFECYCLE_PLAN.md) |
| Local API | [LOCAL_API.md](docs/LOCAL_API.md) |
@@ -371,11 +375,10 @@ Tests use temporary synthetic Vaults. They must never read or copy a real privat
## Roadmap
-1. Refine first-run setup and Vault selection.
-2. Add safer GitHub private-repository setup and privacy verification.
-3. Improve backup history browsing and guided recovery.
-4. Add explicit model-provider authorization.
-5. Provide user-controlled import tools.
+1. Complete the NEXORA identity migration across release and community assets.
+2. Add GitHub Device Flow and verified private-repository provisioning without storing credentials in the Vault.
+3. Expand explicitly authorized model-provider connectors without weakening local-first defaults.
+4. Continue accessibility, localization and Windows packaging validation.
The project will not add silent memory confirmation, automatic psychological labels, unrestricted AI file access, or default cloud collection.
@@ -383,7 +386,7 @@ The project will not add silent memory confirmation, automatic psychological lab
## 中文概览
-Personal AI Profile 是一个**本地优先、模型无关、由用户控制**的个人 AI 上下文系统。
+NEXORA(知序)是一个**开源、本地优先、模型无关、由用户控制**的个人智能平台。项目原开发名称为 Personal AI Profile,现有仓库地址和兼容标识暂时保持不变。
它不会让 AI 自动保存所有聊天,而是建立一条清晰的记忆边界:
@@ -421,8 +424,8 @@ Optional Public Export 经过选择、脱敏和人工确认的公开内
### 中文快速开始
```powershell
-git clone https://github.com/XY-code1/personal-ai-profile.git
-cd personal-ai-profile
+git clone https://github.com/XY-code1/Nexora.git
+cd Nexora
python -m pip install -r requirements.txt
# 在框架仓库之外创建私人 Vault
diff --git a/apps/web/index.html b/apps/web/index.html
index 3356143..77baa76 100644
--- a/apps/web/index.html
+++ b/apps/web/index.html
@@ -3,8 +3,9 @@
-
- Personal AI Profile · 记忆审核
+
+
+ NEXORA 知序 · Personal Intelligence Platform
diff --git a/apps/web/public/brand/favicon.svg b/apps/web/public/brand/favicon.svg
new file mode 100644
index 0000000..ba92953
--- /dev/null
+++ b/apps/web/public/brand/favicon.svg
@@ -0,0 +1,6 @@
+
diff --git a/apps/web/public/brand/nexora-logo.svg b/apps/web/public/brand/nexora-logo.svg
new file mode 100644
index 0000000..10f9497
--- /dev/null
+++ b/apps/web/public/brand/nexora-logo.svg
@@ -0,0 +1,25 @@
+
diff --git a/apps/web/public/brand/nexora-symbol-mono.svg b/apps/web/public/brand/nexora-symbol-mono.svg
new file mode 100644
index 0000000..446f0d3
--- /dev/null
+++ b/apps/web/public/brand/nexora-symbol-mono.svg
@@ -0,0 +1,12 @@
+
diff --git a/apps/web/public/brand/nexora-symbol.svg b/apps/web/public/brand/nexora-symbol.svg
new file mode 100644
index 0000000..4968b8f
--- /dev/null
+++ b/apps/web/public/brand/nexora-symbol.svg
@@ -0,0 +1,27 @@
+
diff --git a/apps/web/public/brand/preview.html b/apps/web/public/brand/preview.html
new file mode 100644
index 0000000..12ef83d
--- /dev/null
+++ b/apps/web/public/brand/preview.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+ NEXORA Brand Foundation
+
+
+
+
+
NEXORA / 知序 · Brand Foundation B1
+
Intelligence, in your orbit.
+
A future-facing identity for a local-first personal intelligence platform. The core represents owned knowledge; the orbits represent controlled connections.
+
Your Intelligence. Your Data. Your Control.
+
+
Primary Logo · Dark
+
Primary Logo · Light
+
App Symbol
+
Monochrome · Dark
+
Monochrome · Light
+
Brand Color System
+
DEEP SPACE #07111F
MIDNIGHT NAVY #0C1728
PANEL BLUE #13243A
ELECTRIC CYAN #12D9F5
NEON VIOLET #906BFF
SIGNAL GREEN #30D6A0
ICE WHITE #EAF3FF
SLATE #8499B4
+
+
Typography
Space Grotesk
Inter and Noto Sans SC support clear, multilingual product communication.
JetBrains Mono · VAULT_ID / REVISION
+
Product Language
Intelligence Core
Local data remains protected. Connections require explicit authorization.
+
+
diff --git a/apps/web/src/App.css b/apps/web/src/App.css
index 07c73cf..dc43bff 100644
--- a/apps/web/src/App.css
+++ b/apps/web/src/App.css
@@ -1,7 +1,7 @@
#root { min-height: 100dvh; }
h1,h2,h3,p { margin-top:0 } button { min-height:44px }
.app-shell{height:100dvh;overflow:hidden;background:var(--bg-primary)}.app-stage{height:100dvh;min-width:0;margin-left:var(--sidebar-width);overflow:auto;scrollbar-gutter:stable}.content-shell{width:min(100%,1500px);margin:auto;padding:28px 34px 56px}.eyebrow{color:var(--color-cyan);font:700 .69rem/1.2 ui-monospace,"Cascadia Code",monospace;letter-spacing:.17em;margin-bottom:8px}.muted{color:var(--text-secondary)}
-.sidebar{position:fixed;inset:0 auto 0 0;z-index:30;width:var(--sidebar-width);display:flex;flex-direction:column;border-right:1px solid var(--border-subtle);background:#0b1322;box-shadow:18px 0 48px rgba(0,0,0,.18)}.brand{position:relative;display:flex;align-items:center;gap:12px;min-height:86px;padding:20px 18px;border-bottom:1px solid var(--border-subtle)}.brand-mark{display:grid;place-items:center;width:42px;height:42px;color:var(--color-primary);border:1px solid var(--border-active);border-radius:12px;background:#101f34;box-shadow:0 0 24px rgba(39,191,255,.16)}.brand-mark svg{width:24px;height:24px}.brand strong{display:block;font-size:.96rem}.brand small{display:block;color:#6f89aa;margin-top:4px;font:700 .58rem ui-monospace,monospace;letter-spacing:.12em}.sidebar nav{display:grid;gap:6px;padding:20px 12px}.sidebar nav button{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:8px;width:100%;padding:10px 12px;color:var(--text-secondary);text-align:left;border:1px solid transparent;border-radius:10px;background:transparent}.sidebar nav button:hover:not([aria-disabled=true]){color:var(--text-primary);background:rgba(39,191,255,.06)}.sidebar nav button.active{color:var(--text-primary);border-color:rgba(39,191,255,.34);background:#13283f;box-shadow:inset 3px 0 var(--color-cyan),0 0 24px rgba(39,191,255,.08)}.sidebar nav button.active svg{color:var(--color-cyan)}.sidebar nav button[aria-disabled=true]{cursor:default;opacity:.54}.sidebar nav button small{color:#647993;font-size:.6rem}.sidebar-status{margin:auto 14px 18px;padding:14px;border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:#101b2c}.sidebar-status p{display:grid;grid-template-columns:20px 1fr auto;align-items:center;margin:0;color:var(--text-secondary);font-size:.75rem}.sidebar-status p+p{margin-top:11px}.sidebar-status svg{color:var(--color-cyan)}.sidebar-status strong{color:var(--color-success);font-size:.68rem}.drawer-close,.mobile-menu,.navigation-scrim{display:none}
+.sidebar{position:fixed;inset:0 auto 0 0;z-index:30;width:var(--sidebar-width);display:flex;flex-direction:column;border-right:1px solid var(--border-subtle);background:#0b1322;box-shadow:18px 0 48px rgba(0,0,0,.18)}.brand{position:relative;display:flex;align-items:center;gap:12px;min-height:86px;padding:20px 18px;border-bottom:1px solid var(--border-subtle)}.brand-mark{display:grid;place-items:center;width:42px;height:42px;color:var(--color-primary);border:1px solid var(--border-active);border-radius:12px;background:#101f34;box-shadow:0 0 24px rgba(39,191,255,.16)}.brand-mark img{width:34px;height:34px}.brand strong{display:flex;align-items:baseline;gap:7px;font:700 .96rem var(--font-display)}.brand strong em{color:var(--brand-slate);font:600 .7rem var(--font-body);font-style:normal}.brand small{display:block;color:#6f89aa;margin-top:4px;font:700 .55rem var(--font-mono);letter-spacing:.11em}.sidebar nav{display:grid;gap:6px;padding:20px 12px}.sidebar nav button{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:8px;width:100%;padding:10px 12px;color:var(--text-secondary);text-align:left;border:1px solid transparent;border-radius:10px;background:transparent}.sidebar nav button:hover:not([aria-disabled=true]){color:var(--text-primary);background:rgba(39,191,255,.06)}.sidebar nav button.active{color:var(--text-primary);border-color:rgba(39,191,255,.34);background:#13283f;box-shadow:inset 3px 0 var(--color-cyan),0 0 24px rgba(39,191,255,.08)}.sidebar nav button.active svg{color:var(--color-cyan)}.sidebar nav button[aria-disabled=true]{cursor:default;opacity:.54}.sidebar nav button small{color:#647993;font-size:.6rem}.sidebar-status{margin:auto 14px 18px;padding:14px;border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:#101b2c}.sidebar-status p{display:grid;grid-template-columns:20px 1fr auto;align-items:center;margin:0;color:var(--text-secondary);font-size:.75rem}.sidebar-status p+p{margin-top:11px}.sidebar-status svg{color:var(--color-cyan)}.sidebar-status strong{color:var(--color-success);font-size:.68rem}.drawer-close,.mobile-menu,.navigation-scrim{display:none}
.topbar{position:sticky;top:0;z-index:20;min-height:86px;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:16px 34px;border-bottom:1px solid var(--border-subtle);background:rgba(8,13,24,.94);backdrop-filter:blur(18px)}.topbar h1{margin:0;font-size:clamp(1.35rem,2.5vw,1.8rem);letter-spacing:-.035em}.topbar-actions{display:flex;align-items:center;gap:10px}.service-status{display:inline-flex;align-items:center;gap:8px;min-height:38px;padding:0 12px;color:var(--text-secondary);border:1px solid var(--border-subtle);border-radius:9px;background:#101b2c;font-size:.76rem;white-space:nowrap}.service-status i{width:7px;height:7px;border-radius:50%;background:var(--color-success);box-shadow:0 0 12px var(--color-success)}.icon-button,.text-button{color:var(--text-secondary);border:1px solid var(--border-subtle);border-radius:8px;background:#111c2d;padding:0 12px}.icon-button{display:grid;place-items:center;width:44px;padding:0}.text-button:hover,.icon-button:hover{color:var(--text-primary);border-color:var(--border-active)}.danger-link{color:#ff9aab}
.intro{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 18px;margin-bottom:18px;border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--bg-secondary);color:var(--text-secondary)}.intro p{margin:0}.intro span,.status,.local-badge{color:var(--color-cyan);font:700 .72rem ui-monospace,monospace;white-space:nowrap}.notice{display:flex;justify-content:space-between;gap:16px;align-items:center;border:1px solid;border-radius:var(--radius-sm);padding:13px 16px;margin-bottom:18px}.notice.success{color:#a8f7d6;border-color:rgba(54,214,154,.35);background:rgba(54,214,154,.08)}.notice.error{color:#ffc1cc;border-color:rgba(255,120,146,.4);background:rgba(255,120,146,.08)}.notice button{color:inherit;border:1px solid currentColor;border-radius:6px;background:transparent;padding:0 10px}
.workspace{display:grid;grid-template-columns:minmax(260px,.72fr) minmax(0,1.75fr);min-height:610px;overflow:hidden;border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:var(--bg-secondary);box-shadow:0 22px 64px rgba(0,0,0,.24)}.memory-list{border-right:1px solid var(--border-subtle);padding:16px}.list-heading{display:flex;justify-content:space-between;align-items:baseline;padding:8px 8px 16px}.list-heading h2{margin:0;font-size:1rem}.list-heading span{color:var(--text-secondary);font-size:.75rem}.memory-row{display:grid;gap:7px;width:100%;min-height:auto;padding:16px 10px;color:var(--text-primary);text-align:left;border:1px solid transparent;border-top-color:var(--border-subtle);background:transparent}.memory-row:hover,.memory-row.selected{border-color:rgba(39,191,255,.3);border-radius:9px;background:#14253a}.memory-row-meta{color:var(--color-violet);font: .65rem ui-monospace,monospace}.memory-row>span:last-child{color:var(--text-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.detail{padding:clamp(24px,4vw,50px);background:#0e1828}.detail-header{display:flex;justify-content:space-between;gap:24px;padding-bottom:22px;margin-bottom:24px;border-bottom:1px solid var(--border-subtle)}.detail-header h2{margin:0;font-size:clamp(1.55rem,3vw,2.4rem)}.metadata{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:0 0 26px}.metadata div{padding:12px;border:1px solid var(--border-subtle);border-radius:8px;background:var(--bg-secondary)}.metadata dt{color:var(--text-secondary);font-size:.7rem}.metadata dd{margin:4px 0 0;font-size:.82rem}
diff --git a/apps/web/src/App.test.tsx b/apps/web/src/App.test.tsx
index 3442b3d..6862dc6 100644
--- a/apps/web/src/App.test.tsx
+++ b/apps/web/src/App.test.tsx
@@ -347,7 +347,7 @@ describe('review workspace', () => {
fireEvent.click(screen.getByRole('button', { name: '连接审核空间' }))
// 首次启动直接进入一页式引导,不展示完整功能菜单。
- await screen.findByRole('heading', { name: '欢迎来到你的个人智能中枢' })
+ await screen.findByRole('heading', { name: '欢迎来到 NEXORA 个人智能中枢' })
expect(screen.queryByRole('button', { name: '成长仪表盘' })).not.toBeInTheDocument()
expect(screen.getByText('创建你的个人空间')).toBeInTheDocument()
expect(screen.getByText('Obsidian 是可选编辑器,不是使用产品的前置条件。')).toBeInTheDocument()
diff --git a/apps/web/src/App.tsx b/apps/web/src/App.tsx
index 83b119c..198f6cd 100644
--- a/apps/web/src/App.tsx
+++ b/apps/web/src/App.tsx
@@ -1,6 +1,6 @@
import { useEffect, useMemo, useRef, useState } from 'react'
import type { FormEvent } from 'react'
-import { Brain, CalendarDots, ChartLineUp, CirclesFour, CloudArrowUp, Database, GithubLogo, HardDrives, House, List, LockKey, Network, PlugsConnected, ShieldCheck, Sparkle, Stack, UserCircle, Warning, X } from '@phosphor-icons/react'
+import { Brain, CalendarDots, ChartLineUp, CloudArrowUp, Database, GithubLogo, HardDrives, House, List, LockKey, Network, PlugsConnected, ShieldCheck, Sparkle, Stack, UserCircle, Warning, X } from '@phosphor-icons/react'
import { ApiClient, ApiError, type Human3Trend, type Memory, type MemoryStats, type MonthlyOverview, type MonthlyReflection, type MonthlyTrend, type ProfileOverview, type ReflectionDimension, type ReflectionEvent, type ReflectionGoal, type SecurityCenter, type TimelineItem } from './api'
import MemoryReviewPage from './MemoryReviewPage'
import MonthlyReflectionPage from './MonthlyReflectionPage'
@@ -522,7 +522,7 @@ function App() {
{navigationOpen && }