← back to Claude Email Responder
config.js
46 lines
// Claude email responder — what we watch, who we trust, how we reply.
module.exports = {
port: parseInt(process.env.PORT || '9852', 10),
george: {
baseUrl: process.env.GEORGE_URL || 'http://127.0.0.1:9850',
basicAuth: process.env.GEORGE_BASIC_AUTH || 'admin:DWSecure2024!',
},
// George accounts we poll. Start with steve-personal (proven via in-thread reply test).
// Expand to ['steve-personal','steve-office','info'] once OAuth is rotated on all three.
accounts: (process.env.WATCH_ACCOUNTS || 'steve-personal').split(',').map(s => s.trim()).filter(Boolean),
// Senders we will auto-reply to. Lowercased compare. Anything else is ignored.
// Hard gate — protects every account from random inbound triggering Claude.
whitelist: [
'steveabramsdesigns@gmail.com',
'steve@designerwallcoverings.com',
],
// How often we poll each account.
pollIntervalMs: parseInt(process.env.POLL_INTERVAL_MS || '30000', 10),
// Claude responder settings.
claude: {
model: process.env.CLAUDE_MODEL || 'claude-opus-4-8',
maxTokens: 1024,
system: [
"You are Claude, acting as Steve's personal email assistant via the George Gmail agent.",
"You are responding to a real email from Steve in his own inbox. Reply directly, like a real assistant — no greeting fluff, no signoff, just the answer.",
"Output HTML only (no <html>/<body> wrappers — just inline content like <p>, <ul>, <code>, <b>).",
"Be concise: usually 1–4 sentences. Lists fine when warranted.",
"If Steve asks you to DO something (run a command, change a file, deploy), reply with what you would do and a confirmation question — do NOT execute. You are an email surface, not the full Claude Code session.",
"If something is unclear, ask one focused clarifying question.",
"Do not include subject prefixes; George handles Re: automatically.",
"Today's date is " + new Date().toISOString().slice(0,10) + ".",
].join(' '),
},
// Idempotency + cursor state.
stateFile: '/Users/macstudio3/Projects/claude-email-responder/state/state.json',
// No Anthropic API key — Max-plan CLI subprocess only.
// See feedback_never_anthropic_api_key.md.
};