Keys your agents can find, and ask you for

An agent checks which keys it can reach before it tells you it has no access. When a key really is missing, it asks on a card, you type the value, and it goes straight to the Keychain.

You have probably had this one. The agent says it does not have access to RESEND_API_KEY, and the key was in .env.local the whole time. Agents in crystl run crystl keys where RESEND_API_KEY before they say that. The answer is a name, a status, and the file that assigns it. It never prints the value.

When a key really is nowhere, the old fix was pasting it into the terminal, where it stays in your shell history. Now the agent runs crystl keys request, and a card appears on your Mac. It names the shard that is asking and shows the agent's reason as a quote. You type the value into a masked field and press save to Keychain. The agent is told "stored" or "declined", and nothing else. There is one catch: the shard that asked keeps the environment it started with, so the key is set in the next shard you open.

Agents also write down what they learn. crystl keys note records where a key lives, who owns it, or that it returned a 403 today, so the next agent reads a note instead of searching the repo. Under all of this, keys you add in settings → providers & keys are stored in the macOS Keychain and set in every new shard. Key scan checks the files git would commit, so a key in the wrong file is caught before it leaves your machine. All of it is free on every tier.

Why it matters

Checks before it says no

crystl keys where tells an agent whether a key is set in its shell, saved in crystl, or assigned in a .env file, and which file to read.

Asks on a masked card

A missing key becomes a card on your Mac. You type it once, it goes to the Keychain, and the agent hears only stored or declined.

The agent's words stay in quotes

The reason shows as a quote under "the agent says", so a persuasive request can never pass for crystl's own words.

Notes for the next agent

Where a key lives, who owns it, what it can do. Paths and sentences only. Anything shaped like a credential is masked or refused.

Kept in the Keychain

Keys you add in settings live in the macOS Keychain and are set as environment variables in every new shard. No exports in your .zshrc.

Caught before you commit

Key scan checks the files git would commit and reports a path and a line number. It never prints the key.

Read the API keys docs→

try it yourself

A free account and a download. macOS only, for now.

get startedgetting started guide →

Frequently asked questions

Does the agent ever see the key I type on the card?
No. The value goes from the masked field to the macOS Keychain. The agent's command returns stored or declined, in plain output and in --json, and nothing else. A key it reads from your project's own .env file is different: crystl keys where tells it which file to read, and it reads the file itself.
Why can't the shard that asked use the key straight away?
A running process keeps the environment it started with, and nothing outside it can change that. So the key is set in every shard you open after you save it, and the agent is told exactly that. It can open a fresh shard, or you can.
Can I answer a key request from my phone?
No, on purpose. Your phone gets a notice naming the key and the shard that asked, because a key name is not a secret. It has no field and no button, so nothing on a lock screen can answer it. You type the value on your Mac.
Is it free?
Yes, on every tier. crystl keys, keys where, keys note, keys request, and key scan all work without a Guild membership, and so does storing keys in settings.
Book of Spells
the crystl guild

Crystl's Book of Spells

Master crystl with a grimoire of powerful prompts. Summon heroes, assemble a party, revive shards, and complete epic quests.

open the book →

More features

Gems & Shards

Gems, shards, and the crystal rail keep every project one click away.

just-ask control

Ask for what you need and your agent does the clicking: text staged for copying, a button that runs the command, a task added, work booked for tomorrow.

Floating Cards

See what every agent needs from you, the moment it needs it.

Agent Activity Panel

One live view of every agent across all your gems: who's working, who's idle, and where tokens are going.

Schedule Agents

Launch a fresh agent at a set time (once, daily, or weekdays). Pick the gem, agent, model, and prompt; crystl fires it on schedule.

Automation (Sequences)

Automate the work you keep doing by hand. Write the job down once and let a schedule, a file landing, or a watched URL run it for you.

Parallel Sessions

Run multiple Claude instances on the same repo in separate git worktrees.

Hero Shards

Summon a single hero as a shard (its own agent, model, and persona) without a quest party.

View Modes

Read a session as a terminal, as a conversation beside it, or as a conversation filling the window. The terminal keeps running either way.

History Navigator

Browse, jump through, and search every session: conversation and tool calls.

Token Tracking

Track token burn per shard, estimate turns left, and reclaim context window by disabling heavy plugins and skills.

Workbench

A slide-out task list in every project, backed by a WORKBENCH.md the agent reads and writes with you.

Markdown Editor

Read any .md rendered, with Mermaid diagrams drawn, and switch to the source to edit. Agents can open docs for you from the CLI.

Prompt Integration

Facet Inserts give you one-click access to saved prompts, commands, and shortcuts.

Agent Files in Your Repo

Your agent setup as plain markdown committed with your code. Every agent reads the same files, every clone gets them, and nothing is locked inside crystl.

Agent File Editor

Create, edit, and manage CLAUDE.md, rules, skills, and agent config files with a block editor, file chooser, and project optimizer.

Project Optimizer

Scan your project for gaps in agent configuration (missing files, incomplete docs, oversized code, and setup issues) with one-click fixes.

Skills Library

Browse and import agentic skills that teach agents like Claude Code or Codex new tricks: code review, testing, deployment, and more.

cavrn terminal

The terminal as structured data: every turn, tool call, result, and table captured as agent-readable metadata. Drawn fast on the GPU with Metal.

Remote Development

Full crystl integration over SSH: approval cards, file relay, and click-to-open on remote machines.

Open Models

Run open models locally or hosted, orchestrate them with frontier agents, and cut token costs.

Agent Orchestration

One agent spawns, supervises, and merges the work of many: a control room for a team of coding agents.

crystl quest

Assemble a party of specialized agents. Each brings unique skills, coordinates in shared chat, and executes in parallel.

Screenshot Bar

Drag recent screenshots into the terminal. Spotlight-powered, always up to date.

Copy Bar

A one-click copy bar under the terminal. Agents stage text, you click Copy. Editable, up to 10 tabs, free.