by ELU-Labs
A full-screen terminal app that runs coding sessions on the AI command lines you already use, with bots that review and do work, and teammates you can ask.
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
# Add to your Claude Code skills
git clone https://github.com/ELU-Labs/eluGuides for using ai agents skills like elu.
See how elu compares with popular alternatives.
A full-screen terminal app that runs coding sessions on the AI command lines you already use, with bots that review and do work, and teammates you can ask.

From your home folder, not inside a project you do not trust:
npx -y @elu-labs/elu
This opens ELU and installs the elu command; next time you type elu. To install
a given version, name it: npx -y @elu-labs/elu@0.1.12.
You need macOS or Linux, Node 22 or newer, Git, Claude Code signed in, and Codex installed
(no sign-in needed; its sandbox runs your project's checks):
npm install --global @openai/codex. Using Antigravity? Read
its page first. More in Install details.
elu
The first start asks for a project name; later starts open your last project. Type a
message and press Enter. That starts a session: the model answers, or edits in a new Git
worktree on its own branch. Then the project's checks run and @reviewer reviews the
change. Nothing is pushed until you type /publish and confirm.
What installing, building and testing leave in the worktree is not a change when Git ignores
the folder itself: node_modules, vendor, .venv, venv, __pycache__, *.egg-info,
.eggs, .next, dist, build, coverage, htmlcov, .pytest_cache, .hypothesis,
.turbo, .cache, target and the like, and an ignored .coverage file. Nothing in those
folders is read, so a link or a large file there never stops a session, and none of it is
published. A folder of one of those names that Git does not ignore, such as a tracked
src/build, is an ordinary folder. Any other ignored file the model writes fails the
no-ignored-output check, and one that looks like a secret, such as .env or
src/build/.env, fails secret-paths; a link among them is never followed.
A worktree sits beside its repository, in a folder named after it with .elu-code added
(shop.elu-code beside shop). When a Task edits the project folder itself and the folder
has no commits yet, ELU first commits its files there as Start project history,
running git init if it needs to, and pushes nothing. A file that looks like a secret, such
as .env, stops it until .gitignore keeps that file out.
| Tab | What it shows |
|---|---|
| Sessions | Every session across your projects. The selected one is open beside the list. |
| Projects | Your projects. n makes one, o makes another the active one. |
| Kanban | The open project's tasks and sessions: To do, In progress, Needs you, Done. On a team, everyone with a clone of the same repository shares one board: every session a teammate, or another computer of yours, runs in it shows in the same columns with who started it and on which machine, to read only. A project whose folder holds several repositories has a board for each. /share off keeps a project off it both ways. |
| Chats | Your team's channels, your teammates and your bots. |
| Bots | Your bots. n makes one, Enter opens one. |
| Usage | Your vendor accounts and their plan usage, then your top 10 agents by cost with their tokens. t switches between today and the last 7 days. |
Click a tab's name. Or press Tab until the tab row is selected, choose with ← and →, and press Enter.
Ask for a change to code or files, or for work that needs planning, and the first reply is a Task: a title, a description, the goal, the objectives that say when it is done, a priority, a severity, the success criteria that show it is done, and the model's estimate of the work. Nothing is edited yet.
| Do | What happens |
|---|---|
Esc, then y |
Approves the Task. The work starts by itself. |
Esc, then n |
Rejects it. Nothing is changed. |
| Type a message | Changes the Task. The card shows the new revision. |
Typing yes and Enter approves too. A question gets a plain answer and no Task. A follow-up
inside an approved Task's goal starts at once; a new piece of work gets a Task of its own.
An approved Task gives its session its name, unless you named the session yourself.
On the Kanban tab a session with a Task shows as that Task: its title, how far it is, its priority and its severity. One that waits for your approval is under Needs you. Enter opens the whole Task, as does a click: the goal, the objectives, the success criteria, the subtasks and the ETA. Its Go to session button opens its session; Enter presses it. A teammate's card, and one of your other computer's, open the same way.
After you approve, the model splits the work into subtasks and changes them as it likes. The card lists them as a checklist and marks the objectives the model reports met. Its ETA is approval plus the estimate, and follows the minutes left the model reports as it works. The Task is done when every objective is reported met and the turn, with its checks and review, has ended. A new message opens it again.
ELU starts the edit only for a Task you approved. What the model can still do in its first turn depends on the vendor and the mode: docs/permissions.md.
Type these in the message box. / alone lists every command, and /help explains the keys.
You can send a message at any time. One sent while the session is working waits in the chat and is sent by itself when that turn ends; several go together, in order. ↑ in the empty message box takes the newest one back so you can change it.
| Type | What it does |
|---|---|
/new |
Starts a new session |
/model sonnet |
Chooses the model of this session; /model alone lists them |
/permissions auto |
Sets what the model may do: ask, auto or full |
/place branch try-coupons |
Sets where a new session runs: worktree, branch NAME or here |
/bots add qa |
Keeps a bot in this session; /bots remove qa takes it out |
/agent add fable |
Adds another model to this session as an agent; write @fable and what to do. Words after the model say what it is for, and --name NAME names it: /agent add sonnet you review my SQL --name sql |
@pair is there a simpler way? |
Asks a bot. Your next messages in that session go to it too |
@model and what do you think? |
Writes to the session's model again |
/changes |
Shows what this session changed; /chat goes back |
/publish |
Shows the exact push and draft pull request, then asks you |
/stop |
Stops the running response. A message you sent while it ran is sent next; /stop again cancels that message |
/schedule in 1h check the build |
Starts a session later or on a schedule: /schedule [when] [message]. /schedule lists times such as in 5m, in 1h and daily 9:00. Each run is a new session with the model, mode and bots of the form (a bot with its own schedule is left out); it does not see the chat it was made in. A schedule gets Full access only when you pick it for that schedule, and the form asks you once before saving it |
/budget 5 |
Limits this session to 5 dollars; /budget off removes the limit |
/standup |
Asks every open session of yours, here and on your other computers, and your teammates' shared ones, for an update, in a new Standup session. See Standup |
@everyone did anyone touch auth? |
In a Standup session, asks the sessions of its last round again, with your question; @everyone standup asks for an update. Elsewhere it starts a Standup with the question |
! git status |
Runs a shell command. In an open session the model gets the command and its output with your next message |
/update |
Says how to update: /quit, then elu update |
/quit |
Closes ELU. Sessions that are running or queued go on in the background; elu conductor stop stops them |
A schedule also runs while ELU is closed, through a login item, once ELU is
installed (not run through npx). On macOS, while an agent works or a schedule is on, ELU
stops the Mac from going to sleep on its own (caffeinate -i); the display can still
sleep. Schedules show in the Sessions tab under Scheduled: p pauses one and x deletes
it. A time is in 30m, every 2h (15 minutes to 7 days), daily 9:00, weekdays 9am,
mon,thu 14:30, tomorrow 15:00 or 2026-12-01 9:00, in this computer's local time.
The model cannot make a schedule itself: asked to repeat work, it gives you the
/schedule line to type.
Each session runs in one of three modes. /permissions ask, auto or full changes it,
and /permissions default auto sets what new sessions start with.
ask, the default): edits the session's files and asks you before
anything else, the internet included.
Codex cannot ask you during a turn, so there these are refused and reported.auto): edits the session's files; a reviewer model, not you, decides
the rest. Commands get no internet unless the reviewer lets one leave the sandbox.
On Grok Build, what its reviewer refuses then asks you.full): any file, any command, the internet, with no sandbox. That
includes push, tags, merges, publishing and deploys: the never list below does not apply.When the model asks, y allows and n denies; f allows and gives that session Full access.
a allows and keeps a narrow rule, such as npm test or git diff, for this project or all
of them, so it is not asked again. Reads in the project, git reads and the project's own test,
lint and build scripts run without asking from the start. /permissions rules or
elu permissions lists them all and removes any. No rule covers the never list.
You can change the mode while a turn runs. When a turn stopped on something a wider mode
allows, its Blocked line says which, and raising the mode continues the turn at once, with
only what that mode allows. A turn that also stopped on your no, or on the never list, waits
for
elu is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by ELU-Labs. A full-screen terminal app that runs coding sessions on the AI command lines you already use, with bots that review and do work, and teammates you can ask. It has 88 GitHub stars.
elu's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/ELU-Labs/elu" and add it to your Claude Code skills directory (see the Installation section above).
elu is primarily written in JavaScript. It is open-source under ELU-Labs on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh elu against similar tools.
No comments yet. Be the first to share your thoughts!