app.twiceshy/twiceshy
Experience memory for coding agents: validated traps, fixes and dead-ends at decision time.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
claude mcp add --transport http twiceshy 'https://api.twiceshy.app' --header 'Authorization: <Bearer token from the free alpha signup at https://twiceshy.app (format: Bearer tok_...)>'
{
"mcpServers": {
"twiceshy": {
"type": "http",
"url": "https://api.twiceshy.app",
"headers": {
"Authorization": "<Bearer token from the free alpha signup at https://twiceshy.app (format: Bearer tok_...)>"
}
}
}
}
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
twiceshy
Once bitten, twice shy.
A self-hosted service that feeds hard-won engineering experience — issues, dead-ends, root causes, validated fixes — to LLM coding agents at decision time, so they stop repeating known mistakes on autopilot. Records are git-backed and provenance-aware; automatic retrieval applies a relevance floor so a weak match can return nothing.
Hosted alpha
The hosted instance runs at twiceshy.app — self-serve
tokens, remote MCP endpoint https://api.twiceshy.app/. External
contributions require a signed CLA before merge
(ADR-0002).
How it works (the locked architecture)
- Source of truth: git-backed markdown experience records (YAML frontmatter
- narrative) — format in docs/SCHEMA.md. The corpus is a separate versioned data product (
twiceshy-corpus, ADR-0021); the engine ships a small frozen fixture (internal/testcorpus/) for tests.
- narrative) — format in docs/SCHEMA.md. The corpus is a separate versioned data product (
- Index: one derived, always-rebuildable SQLite file (FTS5 plus cached, pure-Go dense vectors for pull retrieval).
- Retrieval: fingerprint-exact → BM25 → dense (RRF), stack-fingerprint filtered, hard cap k≤3 with a relevance floor — below it, nothing is injected.
- Channels: push (Claude Code hooks → trap cards), pull (MCP tools over streamable HTTP), index (generated one-liners).
- Trust: agent-proposed records are quarantined; promotion = sandbox fail-to-pass validation + human PR review. A new record IS a pull request.
- Doctors: background jobs that dedup, staleness-check, re-execute repros (CI for memories), decay, and abstract.
Full rationale: docs/research/EXPERIENCE_SERVICE_RESEARCH.md and docs/adr/ADR-0001-architecture.md.
Status
The core service is available as a hosted alpha. For the canonical snapshot of what ships now and the current roadmap, see docs/NEXT_FEATURES.md; deployment and operating details live in docs/DEPLOY-public-alpha.md.
Development
make ci # lint + race tests + coverage floor — what CI runs
See docs/CONVENTIONS.md and docs/CONTEXT.md first.
License
AGPL-3.0-only. Contribution and corpus licensing: docs/adr/ADR-0002-licensing-strategy.md.
Frequently asked questions
What is app.twiceshy/twiceshy?
Experience memory for coding agents: validated traps, fixes and dead-ends at decision time.
How do I install app.twiceshy/twiceshy?
It runs as a remote server. In Claude Code: claude mcp add --transport http twiceshy 'https://api.twiceshy.app' --header 'Authorization: <Bearer token from the free alpha signup at https://twiceshy.app (format: Bearer tok_...)>'. For other clients, paste the JSON configuration from this page into their MCP settings.
Does app.twiceshy/twiceshy need an API key?
Yes. It expects Authorization, which you set in its configuration.
Is app.twiceshy/twiceshy open source?
Yes. Its code is on GitHub under the AGPL-3.0 license.
Who maintains app.twiceshy/twiceshy?
It is published by dotts-h. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.