# FAQ

> Questions people ask about Shelley, and a few they don't.

- [Why “Shelley”?](#why-shelley)
- [Is Shelley only for exe.dev?](#is-shelley-only-for-exedev)
- [How do I turn Shelley off on my exe.dev VM?](#how-do-i-turn-shelley-off-on-my-exedev-vm)
- [Does it have authentication? A sandbox?](#does-it-have-authentication-a-sandbox)
- [Can I try it without an API key?](#can-i-try-it-without-an-api-key)
- [Where did my conversations go?](#where-did-my-conversations-go)
- [Can it listen on localhost only?](#can-it-listen-on-localhost-only)
- [Why does `shelley` need to be on my `PATH`?](#why-does-shelley-need-to-be-on-my-path)
- [I edited AGENTS.md and nothing changed.](#i-edited-agentsmd-and-nothing-changed)
- [Can I use local (stdio) MCP servers?](#can-i-use-local-stdio-mcp-servers)
- [Recording doesn't work.](#recording-doesnt-work)
- [How do I update it?](#how-do-i-update-it)
- [What do the version numbers mean?](#what-do-the-version-numbers-mean)
- [How does it relate to Sketch?](#how-does-it-relate-to-sketch)
- [Can I contribute? Where do I get help?](#can-i-contribute-where-do-i-get-help)

## Why “Shelley”?

Because the main tool it uses is the shell, and its author likes putting “-ey”
at the end of words. It is also named after Percy Bysshe Shelley, with an
appropriately ironic nod at
“[Ozymandias](https://www.poetryfoundation.org/poems/46565/ozymandias).”
Shelley is a computer program, and, it's an it.

And the logo is the S. You know the one.

## Is Shelley only for exe.dev?

No. It was built for [exe.dev](https://exe.dev/), and it comes running on every
exe.dev VM, but it's an ordinary binary for macOS and Linux (amd64 and arm64)
that runs anywhere. There are no Windows builds. For what's different on
exe.dev, see [Shelley on exe.dev](/docs/exe-dev).

## How do I turn Shelley off on my exe.dev VM?

```sh
sudo systemctl disable --now shelley.socket shelley.service
```

You don't have to use Shelley; other coding agents run fine on exe.dev VMs,
and some come pre-installed. See [Shelley on exe.dev](/docs/exe-dev#turning-it-off).

## Does it have authentication? A sandbox?

No, and no. Shelley is single-user: anyone who can reach its port can use it,
and it runs commands as the user who started it, with that user's permissions.
It listens on all network interfaces by default. Bring your own auth and
isolation; [Running it safely](/docs/security) has the details and some
recipes. On exe.dev, the VM is the sandbox and exe.dev's proxy is the auth.

## Can I try it without an API key?

Yes. `shelley --predictable-only serve` runs against a built-in fake model
called `predictable`. It won't write your code, but you can click around. Or use
it on [exe.dev](https://exe.dev/new), where models are included.

## Where did my conversations go?

Probably into a different database. `--db` defaults to `shelley.db` in the
current directory, so starting Shelley from somewhere else starts a fresh one.
Pick a fixed path and always pass it:

```sh
shelley --db ~/.shelley/shelley.db serve
```

Global flags like `--db` go before `serve`. See
[where files live](/docs/install#where-files-live).

## Can it listen on localhost only?

Not with a flag: `--port` sets the port, not the address. Use systemd socket
activation (`serve -systemd-activation`) with a socket bound to `127.0.0.1`;
[Installation](/docs/install#running-it-as-a-service) has a pair of units for
it. Or firewall the port.

## Why does `shelley` need to be on my `PATH`?

The agent runs `shelley` itself, from its shell: `shelley skill cat` to load a
[skill](/docs/skills), and `shelley mcp` to call [MCP servers](/docs/mcp).
Homebrew puts it there for you; with the plain binary, move it somewhere like
`/usr/local/bin`.

## I edited AGENTS.md and nothing changed.

Guidance files are read into the system prompt when a conversation starts, so
edits apply to new conversations. Subagents don't see them at all. See
[AGENTS.md](/docs/agents-md) for which files are read, and from where.

## Can I use local (stdio) MCP servers?

No. Shelley connects to remote servers over Streamable HTTP, and the agent
reaches their tools through `shelley mcp` rather than as native model tools.
See [MCP servers](/docs/mcp).

## Recording doesn't work.

Voice recordings are transcribed with OpenAI's transcription models, so you need
`OPENAI_API_KEY` set (or an exe.dev LLM integration, an `llm_gateway`, or a
custom OpenAI model with the right name; see
[Models and API keys](/docs/models)). Browsers also
only allow microphone access on `https://` pages and `localhost`, so plain
`http://` to another machine won't record.

## How do I update it?

Open the ⋮ menu and choose **Check for New Version**. Shelley downloads the
release, checks it against the published checksums, replaces itself, and exits;
with the systemd socket setup from Installation, the next request starts it
again. There's also an opt-in auto-upgrade, and
`SHELLEY_SKIP_VERSION_CHECK=true` turns the checks off. With Homebrew,
`brew upgrade --cask shelley` works too. Details in
[Installation](/docs/install#upgrading).

## What do the version numbers mean?

A release is cut on every push to `main` that passes tests. Versions look like
`v0.N.9OCTAL`: `N` is the total commit count, and the digits after the 9 are
the short (six-hex-digit) commit SHA in octal. `shelley version` tells you
which one you have.

## How does it relate to Sketch?

Shelley grew out of [Sketch](https://github.com/boldsoftware/sketch), an
earlier coding agent from the same team. Unsurprisingly, much of Shelley is
written by Shelley, Sketch, Claude Code, and Codex.

## Can I contribute? Where do I get help?

Yes: Shelley is Apache-2.0 licensed and lives on
[GitHub](https://github.com/boldsoftware/shelley). Contributions are welcome;
we require a CLA. For bugs, open an
[issue](https://github.com/boldsoftware/shelley/issues). For questions and
chatter, there's the exe.dev [Discord](https://discord.gg/jc9WQUfaxf).
