An AI teammate for teams that work on Discord.
It lives in your channels, works in threads alongside everyone, asks before it does anything destructive, and remembers what it learns from one day to the next.
Request access38% of the tick goes to hopper transfers in two farms near spawn, same cause as on 12 September. Raising
hopper-transfer from 8 to 16 fixed it then.
The thread is where the work happens.
Every thread Luchy watches is a persistent agent session. Someone asks, it investigates with its tools, answers, and acts. The whole team reads along, and anyone can steer it mid-task: a message written while it works lands at its next step, without restarting the job.
- A forum post is a session too.
/newopens a thread with the model and profile you pick;/session infoshows context, cache and cost.- Several agents share one instance, each with its own workspace, tools, credentials and Discord account.
⏩ steered
docs/releases/2.3.md, want me to open the PR?
It remembers. You decide what it keeps.
What Luchy learns is plain markdown: rules the team stated, facts it observed, procedures that worked. Each turn, hybrid search recalls the few items that matter. After a conversation, a reflection pass turns what happened into memory, with its sources attached.
- A rule is something a person actually said. It is announced with a Revoke button.
- A procedure that worked in two separate conversations is proposed as a skill. Nothing becomes a skill until someone approves it.
- Every night, a dream pass archives what expired, rewrites the briefing and posts a report.
- Memory is filed per domain. What two roles share is declared, never inherited.
Rule · from tom's message in #ops
Procedure · 2 successful attempts
It acts. It asks first.
Luchy has a shell, files, web search, and the MCP servers you give it: GitHub, a game panel, anything that speaks stdio or HTTP. The bot owns the permission modes and rules, and anything destructive waits for a yes or no in the thread.
- Rules like
bash(git:*)oredit(//path); an admin's "allow always" persists. - A checkpoint of the workspace on every turn, so a bad edit can be rewound.
- Cost tracked per session.
- A session cannot edit its own settings or MCP config to grant its next self more.
docker compose restart apiNeeds approval
It keeps the team's rhythm.
A morning briefing, a midday check-in, and schedules that open a thread, do the work and report back. The briefing is written from what actually happened: every line points to the thread it came from.
/schedule list, pause, resume or delete what runs on a cron.- A notebook per domain for what the team wants it to keep in mind.
Active projects
Spring event map, in review · Release 2.3, notes drafted
Recent
Evening lag on faction fixed (hopper transfers) · API restarted after a memory leak
Planned
Daily 10:00 backup check · Friday 18:00 weekly report
Discord first. Not Discord only.
The agent stays in one place, on your server. Other surfaces are windows onto the same conversations and the same memory.
- Voice
/voice joinbinds a voice channel to the thread: speech in, speech out. The thread keeps the written answer, attributed to whoever spoke.- Your editor
- Zed, JetBrains and VS Code open and drive the same conversations through the Agent Client Protocol, with diffs and approval prompts.
- The OpenAI API
- Luchy serves the Responses API under
/v1, so an SDK, a chat front-end or an automation drives a conversation with no code of its own.
from openai import OpenAI
client = OpenAI(base_url="https://luchy.example.org/v1", api_key="lk_…")
first = client.responses.create(model="luchy/default", input="What changed this week?")
print(first.output_text)It runs on your side.
One isolated instance per organisation, on your own server: Docker, or a Pterodactyl panel. Your projects and roles are profiles inside it.
- Any model pi supports, with your own keys: Anthropic, OpenAI, Amazon Bedrock, Gemini, Mistral and more.
- Skills as
SKILL.md; a vertical ships as a plugin, versioned on its own. - Telemetry and a dashboard for health, usage and cost.
$ docker compose build
$ docker compose run --rm luchy luchy init
$ docker compose up -dRequest access.
Luchy isn't open to everyone yet. Tell us about your team and what you'd want it to do, and we'll write back.