Vela — An AI coworker for your group chat

VELA
English
Vela, an original teal-haired anime character, with a calm, slightly playful expression.

Open-source AI coworker

An AI coworker for your group chat.

@Vela in a Lark group and it works like a teammate: it answers quick questions, opens a topic for bigger jobs and keeps you posted until they are done. It runs on your own machine.

npm install -g @glows777/vela

It works in your group chat.

Drawn scenes of how the Lark channel works today.

  1. Ask in the group.

    Quick questions get a quick answer, right in the chat.

  2. Bigger job? It opens a topic.

    Each task gets its own topic and one progress card that updates as it works. Steer it or stop it at any time.

  3. It remembers, and it comes back.

    It keeps notes for each group and can wake itself on a schedule.

Not a mockup. One recorded run.

A real run of Vela, recorded once and replayed here: it reads a file and answers. On your own projects it also edits code, runs commands and fetches pages until the task is done.

About this recording

A real run of Vela's agent loop, recorded once and replayed here. This page calls no model. The agent read one prepared file and changed nothing. The text is translated from Chinese, and the typing pace is set for the demo.

Recorded demo

REPLAY
First read demo/sample.ts with read_file. Read no other file; change nothing.
read_file · demo/sample.ts
Exports DemoTask, countCompleted and demoTasks. Of two tasks, one is completed. countCompleted(demoTasks) returns 1.
An overhead view of Vela's hands following a thread across the work surface.

Three ways in.

  1. In your terminal

    vela

    Give it a task and a folder. It reads, runs and edits until it is done.

    cd your-project
    vela
    git diff | vela -p "Review this change"
  2. In your app

    createVela()

    The same agent as a TypeScript SDK. Many sessions in one process, on Node or Bun.

    const vela = createVela({ model, providers, credentials, cwd })
    const session = vela.session('main')
    await session.prompt('Summarize the README')
  3. In your group chat

    vela serve

    Enable the chats you trust. Lark ships built in; other platforms plug in through one channel interface.

    "lark": {
      "appId": "cli_xxx",
      "chats": ["oc_trusted_group"]
    }
Read the docs ↗

What it is made of.

The parts in the codebase today, and the one still being drawn.

In the codebase

  1. Agent loop

    Calls the model and runs the tools it asks for, with no turn limit, until the job is done.

    Retries · Loop detection · Overflow recovery

  2. Extensions & skills

    Plain TypeScript adds tools, slash commands, model providers and channels. MCP servers plug in too.

    Tools · Commands · Providers · Skills · MCP

  3. Chat channels

    One session per chat, a topic per task, progress cards, group notes and scheduled wake-ups.

    Topics · Progress cards · Memory · Routines

  4. SDK

    The same agent inside your own TypeScript app.

    Many sessions · Events · Node & Bun

Still being drawn

Vela relaxing with a sleepy yawn.

Built to understand agents.

My first trading agent turned into AI slop because I did not understand how agents run. So I studied Claude Code and pi and started over. The CLI and SDK follow pi's design; the group-chat part is Vela's own.

Open source under the MIT license. Install it with:
npm install -g @glows777/vela

The film