Wenlan
Wenlan is a source-backed AI knowledge base and LLM wiki for AI work: organize documents and decisions into pages you can find, inspect, and review.
No code. Describe the outcome in chat. AgentDocker creates an agent that chooses its tools, connects your apps, works on its own cloud desktop, and asks before anything risky.
ProductivityGitHub @davoluOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗AgentDocker (https://agentdocker.io) creates autonomous agents by chatting. This repo is the app.
A chat assistant that works across your apps. You type. Claude plans. Code decides which tools may run. Sends, deletes, and payments wait until you approve that exact call.
MCP is the tool standard. Composio connects the long tail of apps with per-user OAuth. The current design is in docs/AGENTIC_CHAT.md.
You need Node 22+, Docker (for Postgres), and an Anthropic API key.
cp .env.example .env
# Put a real BETTER_AUTH_SECRET and ANTHROPIC_API_KEY in .env.
# The database URL in .env.example already matches docker compose.
docker compose up -d
npx prisma db push
npm install
npm run dev
Open http://localhost:3000/chat. Create an account, then talk to the assistant.
Without ANTHROPIC_API_KEY the chat starts and answers that the model is not configured. Clock, notes, and the approval gate still run in tests with no keys.
npm test # unit tests and the golden eval suite
npm run evals # prints PROMOTE or HOLD
npm run typecheck
npm test does not call Anthropic, OpenAI, or Composio.
The production database stays the one already configured as DATABASE_URL. The Vercel build runs prisma generate, then node scripts/apply-schema.mjs, which runs prisma db push against that database. The push only adds the missing connection.scopes column and the assistant tables. It does not pass --accept-data-loss and it does not reset the database. This repo has no migration history, so migrate deploy would try to create tables that already exist.
Leave DATABASE_URL available at build time. If that URL is pooled, also set DATABASE_URL_UNPOOLED to the direct connection string for the same database. DDL uses the unpooled URL. When it is empty, the script copies DATABASE_URL.
If the build log says the schema sync failed, run this against the existing database and redeploy:
DATABASE_URL="postgresql://..." DATABASE_URL_UNPOOLED="postgresql://..." npx prisma db push
The dashboard no longer reads scopes, so it can render before that column exists. If a query still hits a missing table, the page shows a setup message instead of a server error.
| Variable | Required | Why |
|---|---|---|
DATABASE_URL | yes | Postgres. The compose file publishes assistant:assistant@localhost:5432/assistant |
BETTER_AUTH_SECRET | yes | Session signing. openssl rand -base64 32 |
TRUSTED_ORIGINS | no | Extra sign-in origins, comma-separated. https://agentdocker.io and https://www.agentdocker.io are already in the default allowlist |
ANTHROPIC_API_KEY | yes, for live chat | Claude Sonnet plans and acts. Haiku is the cheap model |
COMPOSIO_API_KEY | for apps | Managed OAuth and the long tail. Connect apps at /apps |
COMPOSIO_WEBHOOK_SECRET | for events | Point Composio at https://<host>/api/webhooks/composio |
BILLING_CRON_SECRET or CRON_SECRET | for routines | GET /api/assistant/cron with Authorization: Bearer <secret> |
OPENAI_API_KEY | no | Fallback chat model and embeddings. Without it, retrieval is keyword-only |
TOKEN_VAULT_KEY | no | 32-byte base64 key. Only for direct MCP user tokens |
MCP_SERVERS | no | JSON list of remote MCP servers. Official servers are not bundled |
BETTER_AUTH_URL | yes, in production | Must be https://agentdocker.io on Vercel, not the *.vercel.app deployment URL |
NEXT_PUBLIC_APP_URL | yes, in production | Same public origin, https://agentdocker.io. Used by absolute links outside the sign-in callback |
RESEND_API_KEY / EMAIL_FROM | no | Password reset email. Both must be set or the Forgot password link stays hidden |
GOOGLE_CLIENT_ID / SECRET | no | Google sign-in. Both must be set or the button stays hidden |
Google sign-in is the only SSO provider. The button is rendered from the enabled-provider list, and it appears only when both Google env vars are set. Forgot password appears only when both Resend env vars are set. Leaving either pair empty hides that control and does not crash sign-in.
Register one Web OAuth client in Google Cloud Console. Authorized JavaScript origins:
https://agentdocker.iohttps://www.agentdocker.iohttps://personal-assistant-five-taupe.vercel.apphttp://localhost:3000Authorized redirect URIs:
https://agentdocker.io/api/auth/callback/googlehttps://www.agentdocker.io/api/auth/callback/googlehttps://personal-assistant-five-taupe.vercel.app/api/auth/callback/googlehttp://localhost:3000/api/auth/callback/googleSet both BETTER_AUTH_URL and NEXT_PUBLIC_APP_URL to https://agentdocker.io in Vercel. Do not point either at https://personal-assistant-five-taupe.vercel.app. Google sign-in, sign-up, and password-reset links return to the trusted host the browser used (agentdocker.io, www.agentdocker.io, this project's Vercel host, or localhost). If that host is missing or not trusted, the redirect falls back to https://agentdocker.io. The callback path itself stays relative (/dashboard, /reset-password).
A Google sign-in with the same verified address links onto an existing account. Password sign-up does not mark the address verified, so linking is limited to Google, which attests the address. A password account created on an address the person does not own could receive a later Google sign-in for that address.
This is the beginning of the README. Read the rest at the original. Read the full README ↗
PAYSTACK_* | no | Legacy template-catalog billing |
NEXT_PUBLIC_POSTHOG_KEY | no | PostHog project key. Empty disables analytics |
NEXT_PUBLIC_POSTHOG_HOST | no | Defaults to https://us.i.posthog.com. EU: https://eu.i.posthog.com |