Personal real-world intelligence · v0.1
Your world, intelligently routed.
GrokBot Concierge learns what you like, then makes real-world decisions on your machine: which detour is worth it, where to stack fuel with a gym and groceries, and when leaving beats sitting in the worst of the day. It works offline, stays local, and never calls a premium model unless it has to.
- 0
- premium calls without a key
- local
- SQLite on your disk
- 63
- deterministic tests
- 1
- dependency at runtime
$ concierge brief --city Boise
Daily Brief — Boise — 64° F, light rain late
[Morning] Best coffee + working cafes near you
[Route] 2 candidates along your corridor
[Alerts] 1 weather alive · 0 interruptions
leave by 10:40 to land inside the 15:00–20:00 sweet spot
01 · route intelligence
Detours worth taking, honestly priced.
Instead of optimizing just the route, Concierge scans your corridor and prices every detour in minutes, fuel, and time value — then filters by your preferences. A 12-minute pull-off for a place you already like beats a 40-minute one for a novelty you didn't ask for.
- Cross-track corridor scanning
- Added minutes + fuel + time value
- Personal-fit weighted reasons
$ concierge route --from Boise --to Minneapolis
Corridor Boise → Minneapolis (870 mi)
slc-costco-south 12m detour · fit 74% · score 0.61 · on-route
bozeman-rocks-gym 18m detour · fit 88% · score 0.58 · worth it
bismarck-fold-spa 26m detour · fit 81% · score 0.52 · borderline
mpls-lake-walk 0m · not on corridor · skipped
Best stops: Costco South → Rocks Alive Gym
02 · stop stacking
One stop. Four needs. No extra fuel.
Real stops rarely satisfy one need. Concierge clusters compatible needs — fuel, showers, gym, groceries, quiet work — along the route and ranks combined stops by added time and opportunity density. It turns several hurried pulls-offs into one planned anchor.
- Need-driven clustering (NeedKind)
- Clusters scored by opportunity density
- Works offline from your local knowledge graph
$ concierge stops --city Boise
EXIT 52 · fuel + gym + showers + groceries
+14m off-route · density 3.4 · stack score 0.82
one stop, four needs, zero extra fuel burn
03 · knows what you like
A model of taste, not a wall of tags.
Signal lands through feedback and visits: love, like, neutral, dislike, skip. The ranking engine blends personal fit, novelty, price sensitivity, and open-window fit — and explains its scores instead of just returning a list.
- Feedback/visit-driven preference weights
- Explainable scores per candidate
- Slice-based prompts — never your whole persona
$ concierge feedback --slug bbq --status dislike
$ concierge arrival --city Madison
[Eat] Cubic Roasters reason: loves local roasters (like)
[Move] Chain of Lakes reason: sunset window + water
[Avoid] consistent BBQ ranking dropped (disliked)
04 · best time to move
Leave when the road rewards you.
Departure is scored across candidate windows against daylight, traffic risk, and day-rating. Concierge doesn't just say 'traffic is bad' — it tells you the best window tonight and warns you off the worst one.
- Candidate-window scoring
- Daylight, traffic risk, and day-rating
- Clear worst-window warnings
$ concierge departure --from Boise --to Bozeman
Best: leave 14:00 → arrive 19:00 (score 82)
• lands inside the 15:00–20:00 sweet spot
• daylight until 20:25 · traffic risk falling
• 6:00 AM arrival scored 31 — worst window
companion · daily brief
A plan for today that actually uses today.
Every morning Concierge assembles a brief from local conditions, your preferences, and your own knowledge graph — not a generic feed. Tonight becomes a curated answer to 'what should I do tonight?', and the week plans the long arc.
brief()
today's blocks, alerts, timeline
tonight()
energy + budget aware picks
week()
7-day plan from your slices
$ concierge brief --city Boise
Daily Brief — 2026-09-23 — Boise
[Condition] Sunset 5:31 PM · best daylight from 10:00
[Plan] 07:30 coffee & planning
12:30 lunch — Tater Compass
17:00 recovery — River Den
[Traffic] avoid 16:45 departures on I-84
elastic cost · intelligence router
Premium models are the last resort.
Every task class is ranked against local-first executors first: database, deterministic engines, mock — then — only — optional web/API/LLM providers you enable with keys. Results are cached by freshness so the same question never re-costs. Usage accounting shows exactly how many premium calls were avoided.
- db + deterministic default on — zero keys required
- network executors disabled until a key exists in your environment
- freshness TTLs: 30 min → 90 days, cache-first answering
- usage ledger: calls, cache hits, tokens, avoided premium spend
lookup db → deterministic → mock
compute deterministic → db
retrieve db → web → mock
search web → chatgpt → mock
judgment chatgpt → grok → mock
synthesis grok → mock
result cache 1 hit · 0 premium calls
architecture · open source
Small by design.
One TypeScript library, an orchestrator over pure deterministic engines, an elastic provider router, and a local SQLite store powered by the built-in node:sqlite. Engines never touch the network because they don't need to.
why it matters
Open, local, and honest about it.
MIT license
Do whatever you want with it — keep the notice.
No telemetry
No analytics, no accounts, no phone-home.
Zero native deps
The only runtime dependency is commander.
Docs-first
Architecture, providers, privacy, and dev guides in-repo.
privacy · built in, not bolted on
Your trip plan never leaves your machine.
Local-first
Profile, preferences, visits, trips, and cache live in a local SQLite database in your home directory.
Offline by default
With no API keys set, every command is fully deterministic and local — zero network contact.
Opt-in network
Web/API/LLM executors stay disabled until you provide keys in your environment. Never in the repo.
No telemetry
No analytics, no error reporting, no shared IDs, no sign-up. Nothing phones home.
Reclaimable
concierge reset wipes memory; cache --clear empties provider cache. Delete the .db to start over.
Estimates only
Distances, fuel math, and departure windows are planning estimates — never safety-critical guidance.
faq
Straight answers.
Does it work without the internet?
Yes. With no API keys configured, every capability is deterministic and runs locally — ranking, corridors, fuel, stops, departure, briefs. Network executors are opt-in and disabled by default.
What is this 'intelligence router' really doing?
Each task class has a ranked list of executors (db → deterministic → mock → optional api/web/chatgpt/grok). The router picks the first enabled candidate, caches results by freshness, and records usage so you can see premium calls avoided.
Is the demo data real?
No. Places, fuel stations, events, trails, and example trips are fictional fixtures labeled 'Demo' so the whole product is explorable offline. Never rely on them as live data.
What about the 'Grok' name — is this from xAI?
No. GrokBot Concierge is an independent open-source project and is not affiliated with, endorsed by, or sponsored by xAI. You can use any compatible provider or none at all.
Which Node do I need?
Node.js 22.5 or newer, because the SQLite store uses the built-in node:sqlite module. That keeps native dependencies at zero.
Can I use it as a library?
Yes — it ships both a CLI and a typed library (new Concierge()). A local HTTP JSON API is available via concierge serve.
get started
Run your first brief in five minutes.
Clone, install, and get a personalized daily brief — fully offline. When you want the elastic layer, add a key and let the router spend it wisely.
MIT licensed · open source · local-first
git clone https://github.com/grokbot-concierge/grokbot-conciergecd grokbot-conciergepnpm install && pnpm build pnpm doctor # → healthy, offlinepnpm brief -- --city Boise # optional: go premium on your termsexport GROK_API_KEY=sk-...