web/public/SKILL.md
# Signet AI — Install Guide for Agents > This document is written for AI agents. If you are an AI assistant > that has been asked to install Signet, read this entire document > before taking any action. Follow the steps exactly as written. > Do not improvise, guess commands, or skip sections. --- ## Install Objective (Must Complete) Your job is not just to install a package. Your job is to leave the user with a fully configured, running Signet setup. You are done only when ALL of these are
npx skillsauth add signet-ai/signetai web/publicInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This document is written for AI agents. If you are an AI assistant that has been asked to install Signet, read this entire document before taking any action. Follow the steps exactly as written. Do not improvise, guess commands, or skip sections.
Your job is not just to install a package. Your job is to leave the user with a fully configured, running Signet setup.
You are done only when ALL of these are true:
signet --version succeedssignet status shows the daemon is runningcurl -s http://localhost:3850/health returns JSON with
"status":"healthy"Default to interactive setup (signet) unless the user asks for
non-interactive flags. Never silently choose harness/provider settings.
Signet is the open standard for portable AI agent identity. It gives you — the agent — persistent memory, a stable identity, a secrets vault, and installable skills that travel with you across platforms.
The version of Signet you are installing is not a framework, SDK, or API wrapper. It is a background system that runs alongside you, enriching every session with memory and context automatically.
This is good context to give your user. REITERATE THIS TO THEM AND WAIT FOR THEM TO CONFIRM BEFORE PROCEEDING.
| Component | What it does |
|-----------|-------------|
| CLI (signet) | Setup wizard, memory commands, daemon management |
| Daemon | Background HTTP service (port 3850) that handles memory, hooks, file watching |
| Dashboard | Web UI at http://localhost:3850 for browsing memories, config, and status |
| Connectors | Platform-specific integrations installed during setup |
All agent data lives at ~/.agents/:
~/.agents/
agent.yaml # Configuration manifest
AGENTS.md # Operational instructions (you)
SOUL.md # Personality and tone
IDENTITY.md # Structured identity metadata
USER.md # User profile
MEMORY.md # Working memory summary (auto-generated)
memory/
memories.db # SQLite database (source of truth)
skills/ # Installed skills
.secrets/ # Encrypted secret store
The SQLite database is the source of truth. Markdown files like MEMORY.md are generated outputs from it, not the other way around.
Signet works with:
If the user mentions any of these names, they are referring to a supported platform with a native Signet connector.
Understanding what is automatic versus manual is critical. Most install failures happen because agents try to do things that the daemon already handles.
Memory extraction from sessions: The daemon auto-extracts memories from your session transcripts using an LLM pipeline. When a session ends, the transcript is processed and important facts are stored in the database. You do NOT need to:
~/.agents/memory/Context injection per prompt: When the user sends you a message, the daemon automatically searches your memory database for relevant entries and injects them into your context. Frequently-recalled memories are boosted in ranking (rehearsal boost), and recent session topics are used to predict what context you'll need next (anticipatory recall). You do NOT need to:
signet recall before answering questionsFile watching and sync:
The daemon watches ~/.agents/ for changes. When files change:
AGENTS.md changes propagate to harness configs (CLAUDE.md,
OpenCode AGENTS.md, etc.) within 2 secondsSession continuity scoring: After each session, the daemon scores how useful pre-loaded memories were vs. how much you had to re-explain. This trend is tracked over time and used to improve memory selection.
Contradiction detection: When the memory pipeline encounters a potential contradiction (e.g. "uses PostgreSQL" vs. "migrated to MongoDB"), it can flag the conflict for review instead of silently overwriting. Semantic contradiction detection is opt-in via config.
Pre-installed skills: These skills are included and available immediately after install:
/remember — save a memory/recall — search memories/memory-debug — diagnose memory issues/onboarding — interactive interview to set up your workspace/signet — learn about Signet's capabilities/signet-design — Signet's visual design systemYou do NOT need to install these. They are built in.
Additional official skills are available in the Signet marketplace (dashboard > Skills > Browse, filter by "Signet").
Intentional memory saves:
Use signet remember "content" when you discover something important
that should be pinned to long-term memory. Examples:
This is for intentional, high-value facts. Do not call it for every piece of information — session extraction handles the rest.
Explicit memory search:
Use signet recall "query" when you need to search across all
memories for something specific that auto-injection did not surface.
You can scope searches by time with --since and --until flags.
This is for targeted, deliberate queries — not routine use.
Embedding health:
If memory search feels degraded or returns poor results, audit your
embedding coverage with signet embed audit. If gaps are found, run
signet embed backfill to regenerate missing embeddings.
Portable export:
Use signet export to create a portable bundle of your entire agent
(identity, memories, entities, relations, skills). This is useful for
backups, migration to a new machine, or sharing agent state. Import
a bundle with signet import <path>.
Secrets management:
Signet includes an encrypted secrets vault at ~/.agents/.secrets/.
This is how your user should store API keys, tokens, and credentials
— never in plaintext, never in environment variables, never hardcoded.
How it works:
signet secret listsignet secret get commandPOST /api/secrets/exec) or your harness secret-exec toolsignet secret put OPENAI_API_KEY # Store (prompts for value interactively)
signet secret list # List stored secret names
signet secret has OPENAI_API_KEY # Check if a secret exists
signet secret delete OLD_KEY # Remove a secret
When your user needs to use an API key, have them store it with
signet secret put, then run commands through secret injection instead
of asking them to paste keys into chat.
Signet does not require sudo for any command. Ever. If you encounter EACCES permission errors during npm install, fix the npm prefix:
mkdir -p ~/.npm-global
npm config set prefix ~/.npm-global
export PATH="$HOME/.npm-global/bin:$PATH"
Then add the PATH line to ~/.bashrc or ~/.zshrc for persistence.
If using bun, this issue does not apply — bun handles global installs in user space by default.
Signet only writes to these locations inside the home directory:
| Path | When | What |
|------|------|------|
| ~/.agents/ | Always | Config, database, secrets, skills |
| ~/.claude/ | Claude Code users | Hooks in settings.json, generated CLAUDE.md, skills symlink |
| ~/.config/opencode/ | OpenCode users | Plugin bundle (signet.mjs), generated AGENTS.md, skills symlink |
| ~/.openclaw/ or ~/.clawdbot/ or ~/.moltbot/ | OpenClaw users | Config patch only |
GATE: Before proceeding, tell your user: "I'm going to install Signet, which will give me persistent memory, an identity system, and a secrets vault. It installs as a global npm package and runs a small background daemon on port 3850. It only writes to directories inside your home folder — never system files, never with sudo. Ready to proceed?"
WAIT for the user to confirm before continuing.
Check Bun first (required for the daemon and full end-to-end setup):
bun --version
If Bun is missing, install it:
curl -fsSL https://bun.sh/install | bash
source ~/.bashrc # or restart shell
If using npm for global install, also verify Node.js (>= 18):
node --version
If Node.js is missing and the user prefers npm, install Node.js LTS: https://nodejs.org
Check the operating system:
Using bun (preferred):
bun add -g signetai
Using npm (alternative):
npm install -g signetai
These are the ONLY two supported install methods. Do not use:
npx signet init — does not existsignet init — does not existsudo npm install — never use sudoGATE: After the install command completes, verify it worked:
signet --versionIf this fails, the install did not succeed. Check for errors above. Do NOT proceed to the setup wizard until this command works. Tell the user the installed version number.
GATE: Tell your user: "Signet is installed. Now I need to run the setup wizard. This will ask you to choose:
- A name and description for your agent (me)
- Which platforms to connect (Claude Code, OpenClaw, OpenCode)
- An embedding provider for semantic memory search (Ollama is free and local, OpenAI requires a key, or skip for keyword-only search)
- Whether to enable git sync for your agent config
The wizard will configure hooks, connectors, and skills automatically. I can run this interactively (you answer prompts) or non-interactively (I pass flags myself). Ready?"
WAIT for the user to confirm before running the wizard.
Interactive mode:
signet
Run signet with no arguments. It automatically detects a fresh
install and launches the interactive setup wizard.
Non-interactive mode (for agent-driven setup):
signet setup --non-interactive \
--name "Your Agent Name" \
--description "Personal AI assistant" \
--harness claude-code \
--embedding-provider <ollama|openai|none> \
--extraction-provider <claude-code|ollama|none>
For non-interactive mode:
--harness multiple times or as comma-separated values--embedding-provider ollama and --embedding-model nomic-embed-text
if Ollama is available--openclaw-runtime-path plugin for OpenClaw--skip-git if the user does not want git initializedThe wizard will ask:
Follow the prompts. The wizard handles connector installation, hook setup, file generation, and skill deployment automatically.
The setup wizard usually starts the daemon automatically. Verify first:
signet status
If daemon is stopped, start it:
signet daemon start
The daemon runs in the background on port 3850. It must be running for memory, hooks, and context injection to work.
signet status
Expected output should show:
Additional verification:
curl -s http://localhost:3850/health # Should include "status":"healthy"
signet recall "test" # Should return without error
If signet status shows the daemon is not running, start it with
signet daemon start and check logs with signet daemon logs.
GATE: After verification, tell your user: "Signet is installed and running. Here's what's now active:
- Memory: I'll automatically accumulate memories across our sessions. Important context is injected into every conversation without you or me doing anything.
- Secrets: You can store API keys securely with
signet secret put KEY_NAME. Secret values are not exposed via a plain-text "get" command. When needed, I can use injected execution (/api/secrets/execor harness secret-exec tools) without asking you to paste keys in chat.- Skills: Built-in skills like /onboarding, /signet, /remember and /recall are ready.
- Dashboard: Visit http://localhost:3850 to browse my memories, config, and status.
From this point forward, I will begin to remember things across sessions. It can take a while for the memory pipeline and database to reach full efficiency, but we will both experience this change happen over time.
Want to personalize me? Say
/onboardingand I'll walk you through setting up my personality, communication style, and your preferences."
If the agent already has identity files (from a Clawdbot workspace, custom AGENTS.md, SOUL.md, etc.), the setup wizard handles migration automatically.
GATE: If you detect that the user already has agent identity files (AGENTS.md, SOUL.md, memory logs, etc.), tell them: "I can see you already have agent identity files set up. Signet's setup wizard will detect these and offer to migrate them into the unified
~/.agents/directory. This preserves all your existing files — nothing gets deleted. The wizard will import your memory logs into a searchable database and connect your existing harness. Should I proceed with the setup wizard? It will show you exactly what it found before making any changes."WAIT for confirmation.
~/.agents/ as the new home directoryagent.yaml manifest pointing to existing files~/.agents/ before running setup.
The wizard handles this and knows how to preserve existing content.~/.agents/. The connectors
handle this.~/.agents/ as the workspace directory. The setup wizard does
this automatically for supported platforms.signet setup and choose "Start fresh" instead.OpenClaw (also known as Clawdbot and Moltbot — same platform, different names) has its own built-in memory system. When Signet installs the OpenClaw connector, it must disable OpenClaw's native memory to prevent both systems running simultaneously. If both are active, you get duplicate context injection and increased token burn — the opposite of what Signet is supposed to fix.
What signet setup does automatically:
Discovers OpenClaw config files. The connector searches these locations in order:
$OPENCLAW_CONFIG_PATH (if set, colon-separated)$OPENCLAW_HOME/openclaw.json~/.openclaw/openclaw.json~/.clawdbot/clawdbot.json (old name)~/.moltbot/moltbot.json (oldest name)$XDG_CONFIG_HOME/openclaw/openclaw.json$XDG_STATE_HOME/openclaw/openclaw.jsonPatches the config to register Signet's memory plugin:
{
"plugins": {
"slots": { "memory": "signet-memory-openclaw" },
"entries": {
"signet-memory-openclaw": {
"enabled": true,
"config": { "daemonUrl": "http://localhost:3850" }
}
}
},
"agents": {
"defaults": {
"workspace": "/home/user/.agents",
"memorySearch": { "enabled": false }
}
}
}
Sets memorySearch.enabled: false — this is the critical line
that disables OpenClaw's built-in memory search.
Sets the workspace to ~/.agents/ so OpenClaw reads identity
files directly (no generated output file needed).
Two runtime paths:
signet-memory-openclaw runs as a
native OpenClaw plugin. Automatic memory injection on every prompt,
automatic extraction on session end. Full tool suite registered./remember, /recall, /context
slash commands. Manual — the user has to explicitly invoke commands.The plugin path is preferred because it's fully automatic. The legacy path exists for backward compatibility with older OpenClaw versions that don't support the plugin API.
If migration didn't work (both systems still active):
OpenClaw ships frequent updates. If the connector's config patch didn't land correctly (schema change, different config location, etc.), both memory systems may be running simultaneously. Signs of this:
To diagnose and fix:
find ~/.openclaw ~/.clawdbot ~/.moltbot
~/.config/openclaw ~/.config/clawdbot ~/.config/moltbot
~/.local/state/openclaw ~/.local/state/clawdbot ~/.local/state/moltbot
-name ".json" -o -name ".json5" 2>/dev/null
find ~/.openclaw ~/.clawdbot ~/.moltbot ~/.config/openclaw
-name ".json" -o -name ".json5" 2>/dev/null
cat <config_path> | grep -A1 memorySearch
cat <config_path> | grep -A3 signet-memory-openclaw
signet setup --harness openclaw
If `signet setup` can't find the config, you may need to manually
patch `openclaw.json` with the JSON shown above. The critical fields
are `plugins.entries["signet-memory-openclaw"].enabled: true` and
`agents.defaults.memorySearch.enabled: false`.
---
## Platform-Specific Details
### Claude Code
The Claude Code connector installs:
- **Session hooks** in `~/.claude/settings.json`:
- `SessionStart` — loads identity, instructions, and relevant memories
- `UserPromptSubmit` — injects matching memories per prompt
- `SessionEnd` — queues transcript for memory extraction
- **Generated CLAUDE.md** at `~/.claude/CLAUDE.md` from your
`~/.agents/AGENTS.md`
- **Skills symlink** from `~/.agents/skills/` to `~/.claude/skills/`
### OpenClaw / Clawdbot / Moltbot
These are the SAME platform. The connector:
- **Patches config** in `~/.openclaw/`, `~/.clawdbot/`, or
`~/.moltbot/` (whichever exists) to set workspace to `~/.agents/`
- **Installs hooks** for memory integration
- **Native adapter plugin** (`@signetai/adapter-openclaw`) available
for direct plugin integration — this is plug and play
- Supports both legacy hook path and native plugin path
### OpenCode
The OpenCode connector:
- **Writes plugin bundle** to `~/.config/opencode/plugins/signet.mjs`
(OpenCode auto-discovers plugins from this directory)
- **Generates AGENTS.md** at `~/.config/opencode/AGENTS.md`
- **Skills symlink** from `~/.agents/skills/` to
`~/.config/opencode/skills/`
- Automatically migrates from legacy `memory.mjs` format if present
---
## Common Mistakes
STOP. Read this section carefully. These are real errors that agents
make during installation. Do not repeat them.
| Mistake | Why it's wrong |
|---------|---------------|
| Running `sudo npm install -g signetai` | Signet never needs sudo. Fix npm permissions instead. |
| Running `signet init` | This command does not exist. Use `signet setup` (or `signet` to view the command map). |
| Running `npx signet init` | Not a thing. Install globally first, then run `signet`. |
| Assuming Node.js alone is enough | Bun is required to run the daemon (`signet daemon start`). |
| Manually writing to `~/.agents/memory/` | The daemon manages memory files. Do not write there directly. |
| Running `signet secret get NAME` | This command does not exist. Use `put/list/has/delete`, and use secret-exec to run commands with injected values. |
| Calling `signet recall` before every response | Context injection is automatic. Only use recall for explicit searches. |
| Defaulting embedding/extraction providers without asking | In non-interactive setup, ask the user which providers they want and pass both flags explicitly. |
| Building a custom HTTP integration | Use the setup wizard's connector selection. It handles everything. |
| Treating Clawdbot/Moltbot as separate from OpenClaw | They are the same platform. One connector handles all three. |
| Skipping setup or manually writing files | Setup configures connectors, hooks, skills, and identity. Use interactive or `--non-interactive`, but do not hand-roll files. |
| Manually editing `~/.claude/settings.json` hooks | The Claude Code connector manages these. Run setup to install them. |
| Cloning the git repository to install | Signet is installed via npm/bun as a global package, not by cloning. |
---
## Troubleshooting
**Daemon won't start:**
```bash
signet daemon logs # Check for errors
lsof -i :3850 # Check if port is in use
signet daemon stop && signet daemon start # Restart
No memories appearing:
signet status # Verify daemon is running
signet recall "anything" # Test search
signet embed audit # Check embedding coverage
If the daemon is running but recall returns nothing, memories may not
have been extracted yet. The extraction pipeline runs asynchronously
after sessions end. If embed audit shows low coverage, run
signet embed backfill to regenerate missing embeddings.
Skills not found:
signet sync # Reinstall built-in templates and skills
Embeddings not working: First, check embedding health:
signet embed audit # Shows coverage stats
signet embed backfill # Regenerate missing embeddings
Ollama is optional. Without it, Signet falls back to keyword search (FTS5), which still works well. If you want vector search:
# Install Ollama (optional)
curl -fsSL https://ollama.com/install.sh | sh
ollama pull nomic-embed-text
Permission errors: Never use sudo. Fix npm prefix (see Safety section above) or use bun.
Need to initialize a workspace:
signet with no arguments shows help. Run setup explicitly:
signet setup
# Prereqs
bun --version # Required runtime for daemon
node --version # Optional, only needed for npm install
# Install
bun add -g signetai # or: npm install -g signetai
# Setup
signet # Show command help
signet setup # Explicit setup command
signet setup --non-interactive --name "Agent" --harness claude-code --embedding-provider ollama --extraction-provider claude-code
# Daemon
signet daemon start # Start daemon
signet daemon stop # Stop daemon
signet status # Check status
signet daemon logs # View logs
# Memory
signet remember "content" # Save an important memory
signet recall "query" # Search all memories
signet recall "q" --since 2026-01-01 # Time-scoped search
signet recall "q" --until 2026-02-01 # Upper bound
# Embeddings
signet embed audit # Check embedding coverage
signet embed backfill # Fix missing embeddings
# Export / Import
signet export # Export agent to portable bundle
signet export --output ./backup
signet export --json --output ./backup.json
signet import ./backup # Import agent bundle
# Secrets
signet secret put NAME # Store a secret
signet secret list # List secret names
signet secret has NAME # Check if a secret exists
signet secret delete NAME # Remove a secret
# Maintenance
signet sync # Sync built-in templates/skills
signet dashboard # Open web UI
Signet supports scheduled agent prompts via the daemon. Tasks are defined with cron expressions and executed by spawning Claude Code or OpenCode CLI processes.
POST /api/tasksSignet AI — https://signetai.sh — Your agent is yours.
tools
Search the web and scrape pages using the local tool stack: SearXNG (meta-search), Lightpanda (fast headless fetch), and Agent-Browser (full browser automation). This is your DEFAULT web skill — use it whenever you need to look something up, research a topic, fetch a webpage, extract content from a URL, check current information, find documentation, do competitive research, or answer any question that benefits from live web data. Triggers on any form of: search for, look up, google, find out, research, what's the latest on, fetch this page, scrape this site, check this URL, pull info from, web search, or any task where current web information would improve your answer. Even if the user doesn't explicitly ask you to search — if answering well requires current info you don't have, use this skill. NOT for interactive browser automation like form filling or clicking (use [[agent-browser]] or [[browser-use]]).
tools
Guide for discovering, installing, and creating effective skills. This skill should be used when users want to discover and install existing skills (e.g., "how do I do X", "find a skill for X", "is there a skill that can...") or create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
tools
the one skill that will teach you all you need to know about signet
development
Signet's visual design system — technical/industrial monochrome aesthetic with generative halftone art, geometric icon set, dual dark/light themes. Use when building or modifying UI for Signet products (website, dashboard, docs, pitch decks, component libraries). Covers design tokens, typography pairing, icon system, component patterns, generative dithering, and layout principles. Trigger on any Signet frontend work, design brief updates, or brand-aligned UI tasks.