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.
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
storedordeclined, in plain output and in--json, and nothing else. A key it reads from your project's own.envfile is different:crystl keys wheretells 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.
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.
