You're on a walk, in the shower, halfway through lunch. The architecture decision crystallizes. Open whatever you already use to talk to openclaw: Telegram, WhatsApp, Signal, type it out. It's recorded. No notes app. No copy-paste. No forgetting.
Engineering insight is nonlinear. The right abstraction reveals itself mid-run. The cache invalidation bug becomes obvious during the commute. You know why Postgres is wrong for this schema at 11pm. But by the time you're back at a keyboard, the nuance is gone, or it never made it out of the notes app graveyard.
openclaw listens on whatever messaging channel you configure: Telegram bot, WhatsApp, or any webhook-compatible client. When you send a belief, it's extracted and stored against your active project scope, ready to surface the next time you open your IDE or chat client.
No context switching. You're already on your phone. Open the chat you use daily and send the decision as plaintext, exactly how you'd say it to a teammate.
The belief is typed (decision, preference, entity), scored for confidence, and scoped to your active project. No tagging required. It reads the intent from how you wrote it.
When you open VS Code the next morning and ask anything about that project, the belief surfaces automatically. You don't prime the model. You just build.
openclaw doesn't require a new app. It hooks into the messaging client you're already using via bot or webhook. If you can send a message, you can record a belief.
The most popular setup. Create a bot in ~60 seconds with BotFather. Point it at your Tenure instance. Done.
Via the WhatsApp Business API or a self-hosted bridge. Works on any Android or iPhone you already have the app on.
For teams that need E2E encryption end-to-end. Uses signal-cli under the hood — fully local, nothing touches Signal's servers beyond the message itself.
Slack DM, Discord, iMessage via Shortcuts, custom iOS widget — if it can POST to a URL, it works. The API is three lines.
You don't need a format. Tenure reads intent from natural language. Below are the kinds of things people send most often — and how they get classified.
| What you send | How it's stored |
|---|---|
| "use Vitest, not Jest, Jest's config was causing false positives in the CI matrix" | decision Vitest over Jest (with rationale) |
| "auth service should never write directly to the users table — always go through userRepository" | preference Repository pattern enforced |
| "the payments microservice owns all Stripe logic. no other service touches Stripe keys" | entity payments-service → Stripe boundary |
| "we ruled out Kafka for this — too heavy, Postgres LISTEN/NOTIFY is enough for our throughput" | decision Kafka rejected (with reason) |
| "reminder: the staging DB is read-only after 6pm due to the backup window" | entity staging DB constraint |
Beliefs are scoped to your active project automatically. If you switch projects mid-day, send !scope project:api-service to update scope.
A belief recorded from your phone is the same belief that gets injected in VS Code, OpenWebUI, LibreChat, or wherever you work. It doesn't matter where it came from, it follows you.
Surfaces in the Tenure beliefs panel and is injected into every AI request automatically.
VS Code use case →Proxied through Tenure's OpenAI-compatible endpoint, no config changes, no extra steps.
Same proxy integration. Set the base URL once and all AI requests in the editor are enriched.
Ask openclaw to recall beliefs for a project mid-conversation. It reads back what it has and confirms scope.
If you're already using OpenClaw, there's no separate install step. Open any chat session and say the words — OpenClaw handles the rest.
Full plugin docs at use-cases/openclaw →
Tenure is free, open-source, and runs entirely on your machine. No cloud, no account, no API keys in someone else's hands.