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. Every time you switch AI tools, you face the same issues: - ๐ Repetition: "I'm a Senior SWE", "I prefer Python", "Don't use ORMs" - ๐งฉ Fragmentatio
Add this skill
npx mdskills install topskychen/tildeComprehensive MCP server providing persistent user profiles and knowledge management with multi-backend storage
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.
Every time you switch AI tools, you face the same issues:
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) โ
โโโโโโโโโโโโโโโโโโโโโโโ
# Install from PyPI
pip install tilde-ai
# Initialize your profile
tilde init
Development Installation
# Clone the repository
git clone https://github.com/topskychen/tilde.git
cd tilde
# Install with uv
uv sync
# Run locally
uv run tilde init
Add to .cursor/mcp.json in your project (or ~/.cursor/mcp.json for global access):
{
"mcpServers": {
"tilde": {
"command": "npx",
"args": ["-y", "tilde-ai"]
}
}
}
Once configured, you'll see tilde in your MCP servers with all available tools and resources:

Add to .gemini/antigravity/settings.json in your project:
{
"mcpServers": {
"tilde": {
"command": "npx",
"args": ["-y", "tilde-ai"]
}
}
}
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"tilde": {
"command": "npx",
"args": ["-y", "tilde-ai"]
}
}
}
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:

Edit ~/.tilde/profile.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"
tilde exposes these resources to agents:
| Resource URI | Description |
|---|---|
tilde://user/profile | Full user profile |
tilde://user/identity | Name, role, experience, custom fields |
tilde://user/tech_stack | Languages, preferences, environment |
tilde://user/knowledge | Knowledge sources, domains, projects |
tilde://user/skills | Skills (filtered by visibility) |
tilde://user/experience | Work history |
tilde://user/education | Education background |
tilde://user/projects | Personal/open-source projects |
tilde://user/publications | Papers and publications |
tilde://team/context | Team coding standards and patterns |
| Tool | Description |
|---|---|
get_profile | Retrieve full or partial profile |
get_team_context | Get team-specific context |
propose_update | Agent proposes a profile update (queued for approval) |
list_pending_updates | List updates awaiting user approval |
tilde init # Create default profile
tilde show # Display current profile
tilde show skills # Show skills section only
tilde show --full # Show full content without truncation
tilde edit # Open profile in $EDITOR
tilde config # Show current configuration
tilde pending # List pending agent updates
tilde approve [id2...] # Approve one or more updates
tilde reject [id2...] # Reject one or more updates
tilde approve --all # Approve all pending updates
tilde reject --all # Reject all pending updates
tilde approve --all -e # Approve all except one
tilde log # View update history
tilde ingest # Extract insights from a document
tilde export --format json # Export profile
# Ingest a book and extract insights
tilde ingest "~/Books/DDIA.pdf" --topic data_systems
# Dry run to preview what would be extracted
tilde ingest notes.md --dry-run
# Auto-approve high-confidence updates
tilde ingest paper.pdf --auto-approve 0.8
Bootstrap your profile from an existing resume:
# Import resume (PDF, DOCX, or text)
tilde ingest ~/Documents/resume.pdf --type resume
# Preview what would be extracted
tilde ingest resume.pdf --type resume --dry-run
# Auto-approve high-confidence items
tilde ingest resume.pdf --type resume --auto-approve 0.8
The resume importer extracts:
Manage Anthropic-format skills with full bundling support:
# Import skills from Anthropic skills directory
tilde skills import /path/to/skills
# Import specific skills by name
tilde skills import /path/to/skills -n mcp-builder -n pdf
# Dry run to preview import
tilde skills import ./skills --dry-run
# Import as private skills
tilde skills import ./skills --visibility private
# List all imported skills
tilde skills list
# Export skills to Anthropic format
tilde skills export ./my-skills
# Export specific skill
tilde skills export ./output -n mcp-builder
# Delete skills
tilde skills delete skill-name
tilde skills delete --all --force
The skill importer bundles:
All bundled resources are preserved through import โ persist โ export.
# Create a team
tilde 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 repo
tilde team sync https://example.com/team.json --activate
tilde team sync git@github.com:myorg/team-config.git --activate
# List and manage teams
tilde team list
tilde team show
tilde team edit
tilde team deactivate
tilde supports multiple storage backends:
| Backend | Use Case | Command |
|---|---|---|
| YAML (default) | Human-readable, git-friendly | TILDE_STORAGE=yaml |
| SQLite | Queryable, memories, faster at scale | TILDE_STORAGE=sqlite |
| Mem0 | Semantic search via embeddings | TILDE_STORAGE=mem0 |
# Use SQLite backend
export TILDE_STORAGE=sqlite
tilde init
# Query profile fields (SQLite only)
uv run python -c "
from tilde.storage import get_storage
storage = get_storage(backend='sqlite')
print(storage.query('%languages%'))
"
tilde uses a centralized configuration for LLM and embedding settings. Configuration is stored in ~/.tilde/config.yaml and can be synced across devices.
~/.tilde/config.yaml)| Variable | Description | Default |
|---|---|---|
GOOGLE_API_KEY | Google/Gemini API key (primary) | Required |
OPENAI_API_KEY | OpenAI API key (fallback) | Optional |
TILDE_LLM_MODEL | LLM model for document ingestion | gemini-3-flash-preview |
TILDE_EMBEDDING_MODEL | Embedding model for semantic search | gemini-embedding-001 |
TILDE_STORAGE | Storage backend (yaml, sqlite, mem0) | yaml |
TILDE_PROFILE | Custom profile path | ~/.tilde/profile.yaml |
# View current configuration
tilde config
# Save settings to config file (for syncing across devices)
tilde config --save
# Modify a setting and save
tilde config --set llm_model=gemini-1.5-pro
# Show config file path
tilde config --path
Note: API keys are NEVER saved to the config file for security. Always set them via environment variables.
# Minimal setup (just one API key!)
export GOOGLE_API_KEY="your-google-api-key"
# Save your settings for this device
tilde config --save
# Now you can use all features
tilde ingest paper.pdf
The config file at ~/.tilde/config.yaml is designed to be synced:
~/.tilde/ to your dotfilesExample config file:
llm_model: gemini-3-flash-preview
llm_temperature: 0.7
embedding_model: gemini-embedding-001
embedding_dimensions: 768
storage_backend: yaml
from tilde.config import get_config, call_llm, get_embedding, save_config
# Check current config
config = get_config()
print(f"Provider: {config.provider}")
print(f"LLM Model: {config.llm_model}")
# Use directly
response = call_llm("Summarize this document...")
embedding = get_embedding("Some text to embed")
tilde skills importtilde skills exportIn Unix, ~ (tilde) represents your home directory โ the place where your personal configuration lives. tilde is the home for your AI identity.
MIT
Configure once. Use everywhere. Your data, your control.
Install via CLI
npx mdskills install topskychen/tildetilde is a free, open-source AI agent skill. 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. Every time you switch AI tools, you face the same issues: - ๐ Repetition: "I'm a Senior SWE", "I prefer Python", "Don't use ORMs" - ๐งฉ Fragmentatio
Install tilde with a single command:
npx mdskills install topskychen/tildeThis downloads the skill files into your project and your AI agent picks them up automatically.
tilde works with Claude Code, Claude Desktop, Cursor, Vscode Copilot, Windsurf, Continue Dev, Codex, Gemini Cli, Amp, Roo Code, Goose, Opencode, Trae, Qodo, Command Code. Skills use the open SKILL.md format which is compatible with any AI coding agent that reads markdown instructions.