Eddy
Eddy, the Lofenta assistant
Eddy is the AI assistant built into the Lofenta dashboard. He can read your projects, look at deploy logs, and (with your explicit confirmation) trigger real actions like redeploys, restarts, and rollbacks. This page explains every feature in plain language and where the safety lines are drawn.
Eddy is in admin-only closed beta during launch. Plan gates will open it to paid tiers when public sign-ups go live.
Where Eddy lives
Eddy is at /dashboard/eddy. Each conversation has its own URL of the form /dashboard/eddy/{chatId}. Refresh restores the chat. Chats are personal to your account: they are not shared across an org, so a teammate cannot open one of your Eddy conversations from its URL.
The first time you send a message in a fresh canvas, the URL updates from/dashboard/eddyto /dashboard/eddy/{newId}automatically. After the 3rd back-and-forth turn the chat is auto-titled so the history sidebar reads as a real index, not just "first message truncated".
Read tools (what Eddy can look at)
When you ask a question about your data, Eddy calls a read tool to ground the answer. You'll see a small pill above each reply that lists exactly which tools fired and on which resource:
read: getDeployHistory · project my-store read: getDeployLog · latest deploy (100 lines)
| Tool | What it does |
|---|---|
| listProjects | List of your projects: name, status, template, last update. |
| getProject | One project's full state plus the names of its env vars (never the values). |
| getDeployHistory | Last 10 deploys for a project: status, commit, where it failed. |
| getDeployLog | Log tail for a specific deployment, up to 300 lines. IPs and infra hostnames are redacted. |
| getProjectMetrics | Live CPU / memory / network / uptime for a running container. |
Read tools never need confirmation — they're harmless and they don't leak secrets.
Write tools (with confirmation)
Eddy can also do things: redeploy, restart, roll back, set an env var. These never run silently. When you ask "redeploy my-app", Eddy proposes the action and the chat renders a Confirm/Cancel card above his reply:
Eddy wants to
Redeploy project my-store
Until you click Confirm, nothing happens. Click Cancel and the proposal is dropped (and logged as cancelled, for audit). The available write tools:
| Tool | Effect |
|---|---|
| redeployProject | Same as the "Redeploy" button in the dashboard: builds + ships a fresh deployment. |
| restartProject | Restarts the running container without rebuilding. For runtime stuck states. |
| rollbackProject | Rolls back to a previous successful deployment. Eddy must pick the target id from getDeployHistory. |
| setProjectEnvVar | Adds or updates one env var. The card shows a masked preview of the value before you confirm. |
Built-in safety
- The proposal expires after 5 minutes. Confirm later and Eddy will tell you to start over.
- After a confirmed write, there's a 30-second cooldown on the same (user / tool / project) combo so Eddy can't loop.
- Env values for setProjectEnvVar live inside a signed token, never the model's context, so Eddy can't "see" the value himself.
- Reserved env keys (
HOST,PORT) are rejected at the propose step. - Access is rechecked at confirm time, so if your role on a project changed between the propose + confirm, the action gets blocked.
Database tools
Eddy can work with the databases attached to your projects, grounded in the live schema. Open the chat with the Ask Eddy button in Database Studio, or mention a project in any chat. Read tools run immediately:
- Describe the schema, list databases and linked services.
- Run read-only queries. Write statements are rejected, the query also runs inside a read-only transaction so nothing can change.
- Check database health, size, and the largest tables.
- Read recent logs, cron jobs and their last runs, backups, domains, and usage against your plan.
Two database actions are writes, so they go through the same Confirm card:
| proposeWriteQuery | Proposes a database write. The exact statement is shown before it runs. |
| triggerBackup | Starts a manual backup of the project database. |
Dry-run mode
A toggle at the top of the chat. When ON, write actions log a "would have done X" line but never actually execute, even after you click Confirm. Useful when you want to:
- Explore what Eddy would do on a real project, safely.
- Demo Eddy to a teammate without risking an accidental restart.
- Audit how Eddy would respond to a batch of prompts, then turn dry-run off and confirm only the ones you want.
Read tools (looking at projects / logs / metrics) keep working normally — dry-run only gates write actions. The setting is per-browser and persists across reloads.
@mention to attach a project
Type @as the first character of your message. A popover lists your projects, filtered live as you type the name. Pick one (Enter or Tab grabs the top match) and the project gets attached to the conversation — Eddy now sees its metadata + last failed deploy log without you having to use the project picker.
Type: @my-a Press: Enter or Tab Result: my-app attached, draft cleared, focus stays in textarea
File and screenshot uploads
Two attachment buttons live in the composer:
- Screenshot icon — PNG / JPG / WEBP, up to 3 images per message, 5 MB each. Sent to a vision-capable model so Eddy can read what you're looking at.
- Paperclip icon — code / config / text files. Accepted extensions:
.js.ts.py.json.yaml.tomlDockerfileand many more. Up to 5 files per message, 200 KB each, 500 KB total. File contents are sent to Eddy as part of your message context — useful for "what's wrong with thispackage.json" or "review this Dockerfile.lofenta".
PDFs and binary files are not currently supported. File content lives only in the conversation turn it was attached to; it's not stored as a separate downloadable artifact.
Live streaming + Stop
Eddy's replies stream token-by-token. The Send button morphs into a Stop button () while a reply is generating. Click it to cancel — the partial reply is dropped, no message gets saved.
If Eddy needs to look something up mid-reply (a deploy log, metrics), you'll see a brief italic "Reading getDeployLog..." line in the streamed text while the tool fires, then the answer continues.
Privacy and audit
- Env values are never sent to the model. Eddy can see env key names only.
- Infrastructure markers are redacted. When Eddy reads a deploy log, IPs / SSH endpoints / key fingerprints / internal hostnames are scrubbed before the model sees them.
- Access is enforced. Every tool that touches a project or deployment re-checks that you actually have access. If your role changes, future actions get blocked.
- Every tool call is audited. Read and write actions land in
eddy_actions. Admins can review the trail in the operator dashboard. - Tokens, prompts, and outputs are stored. Your chat history (visible at /dashboard/eddy) persists across sessions on Lofenta's database, encrypted at rest. Delete a chat from the history sidebar to remove it.
What Eddy will not do
- Generic programming tutorials with no deployment angle — Eddy will refuse and point you to your framework's own docs.
- Anything outside the Lofenta surface (writing creative content, doing math, advising on non-platform topics).
- Invent CLI commands or config files. If Eddy doesn't recognize a flag or filename, he'll say so plainly instead of guessing.
- Suggest you migrate to another platform. He stays on-product.
- Fire a write action without asking. No "I'll just restart that for you" silently — the confirm card is always in your hands.