Electra AI Center β June 30 2026 Update
Electra starts thinking ahead, and you can finally ask her what she knows about you
π’ The short version
This update is all about Electra moving from "answers when asked" to "actually has your back."
-
Electra now learns your schedule and acts on it before you ask. The Heartbeat agent β the part of Electra that runs quietly in the background β now pays attention to when you actually work. After a few weeks of normal use, it learns things like "this user usually starts work around 9am on Mondays" and automatically preps a heads-up the night before, so it's waiting for you when you sit down. If you've been coding all day and forgot to commit your work, Electra will give you a gentle nudge before you log off. And right before you push code to GitHub, she'll quietly check that branch's history β if it's failed CI repeatedly recently, she'll warn you before you push, not after.
-
New command: /me β ask Electra what she knows about you. Curious what Electra has actually picked up about you over time? Type /me and she'll gather everything she's learned β your preferences, how you work, your patterns β and write you a warm, plain-English summary. No raw data dumps, no spreadsheets, just Electra telling you about yourself the way a friend would. And don't worry β anything that looks like a password or API key gets automatically scrubbed before it's ever shown to the AI, and your clipboard history is never touched by this feature at all.
-
New command: /vloop β Electra fixes visual bugs and checks her own work. This is a big one. If you tell Electra to fix something visual β a broken layout, a button that's not showing up right β she now takes a screenshot first, makes the fix, takes another screenshot, and actually looks at it to confirm the fix worked. If it didn't, she tries again automatically, learning from what she saw. No more "I fixed it!" followed by you finding out it's still broken. Try it with something like /vloop fix the broken layout in the settings page.
-
Behind-the-scenes reliability fix. Found and fixed a bug where a single hiccup from one of our AI providers could cause a command to fail outright instead of automatically trying a backup. This is now fixed for the new /me command, matching how the rest of Electra already handles provider outages gracefully.
That's the gist β Electra is quietly getting more proactive and more transparent at the same time. Full nerdy breakdown below if you want it. π
π§ The deep dive (for the tech junkies)
Predictive Heartbeat
The Heartbeat agent (heartbeat agent ) already had a solid task-scheduling and ReAct-loop foundation from earlier sprints β what it was missing was the learning layer described on the roadmap. This sprint built that out:
New lightweight activity stream. record_activity(event_type, meta) appends single-line JSON events to ~/.electra/activity_log.jsonl from a handful of choke points in ai terminal β most importantly handlerouted_prompt(), which is the single function every piece of user input passes through regardless of mode or entry point (terminal or Electra Bar). One hook there is enough to capture weekday/hour activity signal without instrumenting every individual mode.
Pattern analysis. analyze_patterns() runs on a ~6-day cadence from inside the existing heartbeat tick loop. It buckets first-activity-of-day timestamps by weekday over a 90-day lookback window, and only trusts a weekday once it has β₯3 samples (avoids overfitting on noise).
Auto-generated predictive tasks. Once a weekday pattern is trusted, generate_predictive_tasks() writes a local-only task (tagged predictive, never touches server tasks) scheduled the night before at a configurable prep time. This required extending the existing schedule parser with a new weekly HH:MM format alongside the existing every Xm/h/d and daily HH:MM syntax.
End-of-day commit nudges. A new tick-level check predcheck_inactivity_and_remind) fires once per day, inside a configurable local-hour window, if there's been prompt activity today but no git_commit event β deduped via a small per-day state file so it never spams.
Branch risk warnings. This one didn't need any new data collection at all β it reuses the existing CI Watch state file (ci_state.json) that was already tracking failed runs per repo/branch. get_branch_risk_warning(repo, branch) counts failures in a 21-day window and returns an advisory string if a branch has failed β₯2 times. Wired in right before the actual git push call in ai terminal commit/push helper β derives the branch via git rev-parse --abbrev-ref HEAD and the repo from git remote get-url origin, purely advisory, never blocks the push.
New /predictive status|analyze|on|off CLI command for visibility and control.
Bonus fix: callai() in the heartbeat ReAct loop had conversation_id nested inside extra_body instead of being a top-level payload key β violating the server contract and silently breaking multi-turn memory continuity in the predictive ReAct loop specifically. Fixed.
/me β AI Self-Knowledge Profile
Before building this, we did a full audit of every place the app actually collects user data, not just Heartbeat:
Explicit /profile preferences (~/.electra/profile.json)
Server-side MemPalace (ChromaDB, keyed by the stable per-mode conversation IDs β chat, coder, novel)
The local offline MemPalace mirror for Ollama mode
Predictive Heartbeat's learned patterns and scheduled automations
Account tier info
Deliberately excluded: clipboard history (in-memory only, never written to disk, and explicitly never read by /me), and anything resembling a credential. gatherme_data() runs every assembled section through mescrub(), which regex-matches api_key/token/password/secret/bearer/sk-β¦/gh*_β¦ patterns and redacts them before the bundle is capped at 6000 chars and sent anywhere near a prompt β defense in depth on top of simply not collecting credentials in the first place.
The AI-facing system prompt is explicit about tone and boundaries: second-person, 150β300 words, zero internal jargon (no file paths, no "MemPalace," no JSON), honest about sparse data rather than inventing details.
Fallback chain fix: the first version of /me only tried one model and surfaced raw 502 Bad Gateway errors straight to the user on the first provider hiccup β a real bug caught from a live run. Rewritten to walk a short candidate list (current model first, then up to 4 from FALLBACK_MODELS), treating any 5xx or timeout as "try the next one" rather than a hard failure, matching the resilience pattern already used everywhere else model calls happen in the app.
Visual Feedback Loop β /vloop
Worth noting: the underlying primitives β take_screenshot and analyze_image β already existed as registered coder-agent tools the AI could call mid-task. What the roadmap item actually called for was the outer loop: an autonomous see β act β verify cycle, not just the individual capabilities.
/vloop , runs from inside /coder (it needs an active coding session/workspace).
Captures a silent baseline screenshot vloopcapture(), separate from the interactive /screenshot command).
Dispatches the actual fix attempt through process_coding_message() β the full coder agent tool loop, which can launch the app via open_application, edit files, run commands, and optionally use its own vision tools mid-task.
Takes an independent "after" screenshot and sends it to the vision model with an explicit verification prompt: reply VERIFIED or NOT_VERIFIED plus a one-line reason.
If not verified, that exact vision feedback gets folded into the next attempt's prompt automatically β up to 3 attempts by default β so each retry is informed by what actually went wrong visually, not just a generic "try again."
Built on the existing scrot/gnome-screenshot/ImageMagick fallback chain β fully native to the Linux desktop, no browser automation involved.