Tilde

io.github.topskychen由 GitHub 帳號 topskychen 發布v0.1.1更新於 Oct 24, 2026

Your AI agents' home directory — privacy-first MCP server for portable AI identity.

已驗證STDIO僅桌面效率與工作流知識與記憶

概覽

AI 產生的概覽

在本機執行的 MCP 伺服器,為 AI 助理提供可攜式的個人檔案——身分、技術棧、知識、技能與團隊脈絡,資料保存在本機。

可以做什麼
讀取完整或部分的使用者檔案,涵蓋身分、技術棧、知識來源、技能、工作經歷、教育背景、專案與發表成果,以及團隊脈絡和編碼規範,透過資源與 get_profile、get_team_context 等工具提供。提出檔案更新建議,進入待使用者核准的佇列,並列出待核准的更新。透過命令列管理 Anthropic SKILL.md 格式的技能,可設為公開、私有或團隊可見。匯入文件、書籍或履歷以擷取重點並初始化檔案,支援試跑和自動核准。可選擇 YAML、SQLite 或 Mem0 儲存後端,並匯出檔案。
適用情境
適合在多个支援 MCP 的助理之間切換、希望每處都能取得相同個人與團隊脈絡而不必重複輸入的使用者。也適合希望把偏好、技能和編碼規範分享給代理、同時讓資料留在本機並自行核准變更的開發者。
執行需求
以 stdio 本機程序執行,可從 npm(tilde-ai)或 PyPI(tilde-ai)安裝;README 在用戶端設定中使用 npx tilde-ai。需先初始化檔案。文件匯入和語意搜尋需要 GOOGLE_API_KEY(主要)以及可選的 OPENAI_API_KEY,透過環境變數設定。可選設定包括 TILDE_STORAGE、TILDE_PROFILE、TILDE_LLM_MODEL 和 TILDE_EMBEDDING_MODEL。僅支援桌面用戶端。
安裝前請注意
檔案包含姓名、工作經歷、教育背景和技能等個人資料,存放在 ~/.tilde 下,任何已連線的代理都可讀取;標示為私有的技能會被過濾,但仍應留意所存內容。代理可以提出檔案修改建議,應逐筆謹慎核准。文件匯入會把內容傳送給所設定的 LLM 服務商(Google 或 OpenAI),使用 GOOGLE_API_KEY 或 OPENAI_API_KEY。團隊同步可從 URL 或 git 儲存庫取得設定。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Tilde,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

🏠 tilde

Your AI agents' home directory

tilde is a privacy-first Model Context Protocol (MCP) server that acts as the universal memory and profile layer for AI Agents.

Configure once. Use everywhere. Your data, your control.

Supports profile management, skills, resume import, and team sync.

The Problem

Every time you switch AI tools, you face the same issues:

  • 🔄 Repetition: "I'm a Senior SWE", "I prefer Python", "Don't use ORMs"
  • 🧩 Fragmentation: Preferences learned in Cursor aren't available in Claude
  • 🔒 Privacy Concerns: Unsure who has access to your personal context

The Solution

tilde acts as a "digital passport" that your AI agents can read:

┌────────────────────────────────────────────────────────────┐│  Claude Desktop  │   Cursor   │  Windsurf  │  Your Agent   │└────────┬─────────┴─────┬──────┴─────┬──────┴───────┬───────┘         │               │            │              │         └───────────────┴─────┬──────┴──────────────┘                               │                    ┌──────────▼──────────┐                    │   tilde MCP Server  │                    │   (runs locally)    │                    └──────────┬──────────┘                               │                    ┌──────────▼──────────┐                    │   ~/.tilde/profile  │                    │   (your data)       │                    └─────────────────────┘

Features

  • 🏠 Local-First: Your data stays on your machine by default
  • 📋 Structured Profiles: Identity, tech stack, knowledge, skills
  • 🔌 MCP Standard: Works with any MCP-compliant agent
  • ✏️ Human-in-the-Loop: Agents can propose updates, you approve them
  • 🔧 Extensible Schema: Add custom fields without modifying code
  • 🔒 Skills Privacy: Control which skills are visible to agents (public/private/team)
  • 🤖 Agent-Callable Skills: Define skills that AI agents can invoke on your behalf
  • 📄 Resume Import: Bootstrap your profile from existing resume/CV
  • 📚 Knowledge Sources: Books, docs, courses, articles - unified learning model
  • 👥 Team Sync: Share coding standards across your team

Quick Start

Installation

bash
# Install from PyPIpip install tilde-ai
# Initialize your profiletilde init
Development Installation
bash
# Clone the repositorygit clone https://github.com/topskychen/tilde.gitcd tilde
# Install with uvuv sync
# Run locallyuv run tilde init

Configure Cursor

Add to .cursor/mcp.json in your project (or ~/.cursor/mcp.json for global access):

json
{  "mcpServers": {    "tilde": {      "command": "npx",      "args": ["-y", "tilde-ai"]    }  }}

Once configured, you'll see tilde in your MCP servers with all available tools and resources:

[Cursor MCP Settings]

Configure Antigravity

Add to .gemini/antigravity/settings.json in your project:

json
{  "mcpServers": {    "tilde": {      "command": "npx",      "args": ["-y", "tilde-ai"]    }  }}

Configure Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

json
{  "mcpServers": {    "tilde": {      "command": "npx",      "args": ["-y", "tilde-ai"]    }  }}

Example Usage

Once configured, your AI agent can access your profile. Try asking:

"What is my name?"

The agent will use the get_profile tool to fetch your identity and respond with your name and role:

[Cursor Demo]

Create Your Profile

Edit ~/.tilde/profile.yaml:

yaml
schema_version: "1.0.0"
user_profile:  identity:    name: "John Doe"    role: "Full Stack Developer"    years_experience: 10    # Add any custom fields you need:    timezone: "America/Los_Angeles"    pronouns: "they/them"
  tech_stack:    languages:      - TypeScript      - Python      - Go    frameworks:      - React      - FastAPI      - Next.js    preferences:      - "Prefer composition over inheritance"      - "Write tests before implementation (TDD)"      - "Use descriptive variable names over comments"    environment: "VS Code, Docker, Linux/MacOS"
  # Knowledge sources: books, docs, courses, articles, etc.  knowledge:    domains:      web_development: "Focus on performance and accessibility"      ml_ops: "Experience deploying ML models to production"        sources:      - title: "Clean Code"        source_type: "book"        insights:          - "Functions should do one thing"          - "Prefer meaningful names over documentation"      - title: "React Documentation"        source_type: "document"        url: "https://react.dev"        insights:          - "Prefer Server Components for data fetching"
  # Agent-callable skills (Anthropic SKILL.md format)  skills:    - name: "code-formatter"      description: "Format code using project conventions"      visibility: "public"      tags: ["automation", "code-quality"]    - name: "deploy-staging"      description: "Deploy current branch to staging environment"      visibility: "team"    - name: "expense-reporter"      description: "Generate expense reports from receipts"      visibility: "private"
team_context:  organization: "Acme Corp"  coding_standards: "ESLint + Prettier, PR reviews required"  architecture_patterns: "Monorepo with shared packages"  do_not_use:    - "jQuery"    - "Class components in React"

MCP Resources

tilde exposes these resources to agents:

Resource URIDescription
tilde://user/profileFull user profile
tilde://user/identityName, role, experience, custom fields
tilde://user/tech_stackLanguages, preferences, environment
tilde://user/knowledgeKnowledge sources, domains, projects
tilde://user/skillsSkills (filtered by visibility)
tilde://user/experienceWork history
tilde://user/educationEducation background
tilde://user/projectsPersonal/open-source projects
tilde://user/publicationsPapers and publications
tilde://team/contextTeam coding standards and patterns

MCP Tools

ToolDescription
get_profileRetrieve full or partial profile
get_team_contextGet team-specific context
propose_updateAgent proposes a profile update (queued for approval)
list_pending_updatesList updates awaiting user approval

CLI Commands

bash
tilde init                    # Create default profiletilde show                    # Display current profiletilde show skills             # Show skills section onlytilde show --full             # Show full content without truncationtilde edit                    # Open profile in $EDITORtilde config                  # Show current configurationtilde pending                 # List pending agent updatestilde approve <id> [id2...]   # Approve one or more updatestilde reject <id> [id2...]    # Reject one or more updatestilde approve --all           # Approve all pending updatestilde reject --all            # Reject all pending updatestilde approve --all -e <id>   # Approve all except onetilde log                     # View update historytilde ingest <file>           # Extract insights from a documenttilde export --format json    # Export profile

Document Ingestion

bash
# Ingest a book and extract insightstilde ingest "~/Books/DDIA.pdf" --topic data_systems
# Dry run to preview what would be extractedtilde ingest notes.md --dry-run
# Auto-approve high-confidence updatestilde ingest paper.pdf --auto-approve 0.8

Resume Import

Bootstrap your profile from an existing resume:

bash
# Import resume (PDF, DOCX, or text)tilde ingest ~/Documents/resume.pdf --type resume
# Preview what would be extractedtilde ingest resume.pdf --type resume --dry-run
# Auto-approve high-confidence itemstilde ingest resume.pdf --type resume --auto-approve 0.8

The resume importer extracts:

  • Identity: Name, role, years of experience
  • Experience: Work history with companies, roles, dates
  • Education: Degrees, institutions, graduation years
  • Tech Stack: Programming languages, frameworks, tools
  • Projects: Personal and open-source projects
  • Publications: Papers, patents, articles

Skills Management

Manage Anthropic-format skills with full bundling support:

bash
# Import skills from Anthropic skills directorytilde skills import /path/to/skills
# Import specific skills by nametilde skills import /path/to/skills -n mcp-builder -n pdf
# Dry run to preview importtilde skills import ./skills --dry-run
# Import as private skillstilde skills import ./skills --visibility private
# List all imported skillstilde skills list
# Export skills to Anthropic formattilde skills export ./my-skills
# Export specific skilltilde skills export ./output -n mcp-builder
# Delete skillstilde skills delete skill-nametilde skills delete --all --force

The skill importer bundles:

  • SKILL.md: Skill content with YAML frontmatter
  • scripts/: Python scripts and utilities
  • references/: Documentation files
  • templates/: Template files
  • assets/: Static assets
  • Root files: LICENSE.txt, etc.

All bundled resources are preserved through import → persist → export.

Team Management

bash
# Create a teamtilde team create myteam --name "My Startup" --org "ACME Corp"
# Activate team context (applies to all profile queries)tilde team activate myteam
# Sync team config from URL or git repotilde team sync https://example.com/team.json --activatetilde team sync [email protected]:myorg/team-config.git --activate
# List and manage teamstilde team listtilde team showtilde team edittilde team deactivate

Storage Backends

tilde supports multiple storage backends:

BackendUse CaseCommand
YAML (default)Human-readable, git-friendlyTILDE_STORAGE=yaml
SQLiteQueryable, memories, faster at scaleTILDE_STORAGE=sqlite
Mem0Semantic search via embeddingsTILDE_STORAGE=mem0
bash
# Use SQLite backendexport TILDE_STORAGE=sqlitetilde init
# Query profile fields (SQLite only)uv run python -c "from tilde.storage import get_storagestorage = get_storage(backend='sqlite')print(storage.query('%languages%'))"

Configuration

tilde uses a centralized configuration for LLM and embedding settings. Configuration is stored in ~/.tilde/config.yaml and can be synced across devices.

Configuration Priority

  1. Environment variables (highest priority)
  2. Config file (~/.tilde/config.yaml)
  3. Built-in defaults (lowest priority)

Environment Variables

VariableDescriptionDefault
GOOGLE_API_KEYGoogle/Gemini API key (primary)Required
OPENAI_API_KEYOpenAI API key (fallback)Optional
TILDE_LLM_MODELLLM model for document ingestiongemini-3-flash-preview
TILDE_EMBEDDING_MODELEmbedding model for semantic searchgemini-embedding-001
TILDE_STORAGEStorage backend (yaml, sqlite, mem0)yaml
TILDE_PROFILECustom profile path~/.tilde/profile.yaml

Managing Configuration

bash
# View current configurationtilde config
# Save settings to config file (for syncing across devices)tilde config --save
# Modify a setting and savetilde config --set llm_model=gemini-1.5-pro
# Show config file pathtilde config --path

Note: API keys are NEVER saved to the config file for security. Always set them via environment variables.

Quick Setup

bash
# Minimal setup (just one API key!)export GOOGLE_API_KEY="your-google-api-key"
# Save your settings for this devicetilde config --save
# Now you can use all featurestilde ingest paper.pdf

Syncing Across Devices

The config file at ~/.tilde/config.yaml is designed to be synced:

  1. Via dotfiles repo: Add ~/.tilde/ to your dotfiles
  2. Via cloud sync: Dropbox, iCloud, or similar
  3. Manually: Copy the file to new devices

Example config file:

yaml
llm_model: gemini-3-flash-previewllm_temperature: 0.7embedding_model: gemini-embedding-001embedding_dimensions: 768storage_backend: yaml

Programmatic Configuration

python
from tilde.config import get_config, call_llm, get_embedding, save_config
# Check current configconfig = get_config()print(f"Provider: {config.provider}")print(f"LLM Model: {config.llm_model}")
# Use directlyresponse = call_llm("Summarize this document...")embedding = get_embedding("Some text to embed")

Roadmap

  • Phase 1: MVP with profile reading
  • Phase 2: Agent-proposed updates with approval flow
  • Phase 3: Document ingestion (books, PDFs)
  • Phase 4: Team sync for B2B use cases
  • Phase 5: SQLite and Mem0 storage backends
  • Phase 6: Skill Management (Anthropic SKILL.md format)
    • Batch import from directory with tilde skills import
    • Export to directory with tilde skills export
    • Full bundling of scripts, references, templates, assets
    • Deduplication by skill name

Why "tilde"?

In Unix, ~ (tilde) represents your home directory — the place where your personal configuration lives. tilde is the home for your AI identity.


Philosophy

  1. Your Data, Your Control: Local by default, sync only if you choose
  2. Human-in-the-Loop: Agents propose, humans decide
  3. Portable & Open: Export anytime, no lock-in, works with any MCP tool
  4. Progressive Disclosure: Start simple, add complexity as needed

License

MIT


Configure once. Use everywhere. Your data, your control.

來源:README.md,提交 0a9c925

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.1最新Sep 16, 2026

評分

已滿足適用檢查項的 40%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。