zaly

July 10, 2026 · View on GitHub

Hackable terminal coding agent.

zaly is an AI coding agent with a polished terminal UI, persistent sessions, flexible model support, explicit permissions, and a resource system built to be extended.

Warning

zaly is alpha software. It is already useful and fairly polished, but APIs, configuration, session formats, and behavior may change before 1.0. Expect rough edges.

✨ Features

  • Fast by design — startup and session resume stay fast, even with very large histories. Lazy modules, chunked JSONL reads from the end, incremental loading, and progressive widget rendering keep work off the path to first render.
  • A terminal UI built for agent work — use a focused fullscreen interface or keep native terminal scrollback. Streaming Markdown, syntax highlighting, overlays, mouse support, selection, clipboard integration, themes, and terminal images are built in.
  • Choose the right model per task — authenticate with multiple providers, browse available models, switch models mid-session, and tune reasoning effort without restarting zaly.
  • Sessions that can keep going — sessions persist and resume per workspace. Inspect the exact context sent to the model, browse the message tree, compact old history, and let automatic masking keep large tool results under control.
  • Built for both sides of the conversation — zaly keeps the agent aware of session resumes, time, compaction, context pressure, model changes, completed tasks, and other runtime events. Important harness state becomes context instead of remaining invisible.
  • Tools without blocking the conversation — long-running tools become managed background tasks. Stop a turn, inspect task progress, and keep working without losing the session.
  • Explicit permissions — choose strict, readonly, permissive, or yolo, then refine behavior with per-tool allow, ask, and deny rules.
  • Hackable by design — add commands, reusable skills, resource packs, themes, and TypeScript plugins at user or project scope. Reload resources without restarting the app.

📋 Requirements

  • Node.js 22.11 or newer
  • Access to at least one supported model provider; credentials where required
  • A modern terminal; mouse, clipboard, and terminal graphics support are optional

🚀 Install

With npm:

npm install -g @zaly/cli

Or with Bun:

bun add -g @zaly/cli

⚡ Quick start

cd your-project
zaly --yolo

Start typing to talk to the agent. zaly persists sessions and resumes the most recent session for the workspace unless you start a new one.

Useful first actions:

  • /login authenticates with a model provider.
  • /model browses and switches models.
  • /help shows all available actions and keybindings.

🔐 Permissions

For now, we recommend the yolo preset for the smoothest experience with capable models. It allows every tool call without prompting, including shell commands and file writes. Only use it with models, tasks, and projects you trust.

Enable it for one invocation:

zaly --yolo

To make it persistent, run /config and add:

{
  "permissions": {
    "preset": "yolo"
  }
}

The other presets—strict, readonly, and permissive—provide progressively broader defaults and can be refined with explicit allow, ask, and deny rules.

⌨️ Essential actions

Type / in the composer to discover actions and commands. /help shows the complete list together with active keybindings.

Action or keyWhat it does
/help, Ctrl-HShow actions and keyboard shortcuts
/loginAuthenticate with a model provider
/modelBrowse or switch the model used for future turns
/effortChange the model's reasoning effort
/contextInspect the context currently sent to the model
/treeBrowse the current session's message tree
/newStart a new session in the current workspace
/resumeFind and resume another session
/compactSummarize older history while preserving recent messages
/configEdit user or project configuration
/resourcesEnable or disable resources for the workspace
/pluginsManage installed plugins
/themeChoose a color theme for the current session
/stop, EscStop the current agent turn or running tool batch
Ctrl-YCopy the selection or composer input
/history, Ctrl-RBrowse and reuse previous composer input

🧩 Customization

zaly can load resources from both user and project configuration:

  • Commands turn reusable shell or template workflows into composer actions.
  • Skills provide reusable instructions and supporting files that the agent can activate when needed.
  • Resource packs bundle commands, skills, themes, settings, and plugins.
  • Themes customize both the TUI and syntax highlighting.
  • TypeScript plugins can extend tools, hooks, model behavior, and the app through @zaly/plugin.

Use /config to edit configuration, /resources to choose which resources are enabled, and /reload to reload plugins and resources without restarting zaly. These formats are still evolving during alpha.

🖥️ Terminal notes

  • Fullscreen mode provides a focused app-like interface. Scrollback mode renders into native terminal history. Configure the mode with /config.
  • Clipboard support depends on the platform and terminal environment. Ctrl-Y copies the active selection or composer input.
  • Images use the Kitty Graphics Protocol when supported and degrade gracefully when terminal graphics are unavailable.
  • tmux graphics support depends on terminal passthrough and tmux configuration.

📦 Packages

PackageDescription
@zaly/cliThe zaly terminal app: composer, actions, sessions, providers, permissions, and TUI wiring.
@zaly/agentAgent runtime: session loop, tools, permissions, compaction, masking, tasks, and subagents.
@zaly/aiProvider/model abstraction: auth, streaming, content, tools, validation, and model metadata.
@zaly/tuiTerminal UI framework: stream/UI/overlay surfaces, widgets, themes, selection, clipboard, and terminal graphics.
@zaly/configSettings, resources, packs, plugins, and configuration schemas.
@zaly/pluginPlugin-facing API and loader helpers.
@zaly/sharedShared utilities for paths, processes, detection, images, ANSI text, templates, and more.
@zaly/devInternal development CLI for building, testing, linting, formatting, and publishing this monorepo.

🛠️ Development

This is a Bun workspace monorepo.

bun install
bun test
bun z lint
bun z build

Useful development commands:

bun test packages/agent/test/permissions.test.ts
bun z test --coverage --reporter minimal
bun z fmt

Status

zaly is pre-1.0 and in active development. Public package APIs are not frozen.

License

MIT © Folke Lemaitre