diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..d9db6388a738355312bdbf21242cc76abcee922e --- /dev/null +++ b/LICENSE @@ -0,0 +1,13 @@ +Copyright 2026 Bold Software, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/README.md b/README.md index 4210b86e1b9ea9a51fc68d440d0a7cff8fecdd64..a510b556a4a17529a981da8fef45d36e0684a161 100644 --- a/README.md +++ b/README.md @@ -1,70 +1,49 @@ -# Shelley - A Coding Agent for exe.dev +# Shelley: a coding agent for exe.dev -Shelley is a conversational AI coding agent that provides a web interface -for AI-powered coding assistance. +Shelley is a mobile-friendly, web-based, multi-conversation, multi-modal, +multi-model, single-user coding agent built for but not exclusive to +[exe.dev](https://exe.dev/). It does not come with authorization or sandboxing: +bring your own. -See also ARCHITECTURE.md for architectural details. +*Mobile-friendly* because ideas can come any time. -## Dev Tricks +*Web-based*, because terminal-based scroll back is punishment for shoplifting in some countries. -If you want to see how mobile looks, and you're on your home -network where you've got mDNS working fine, you can -run - socat TCP-LISTEN:9001,fork TCP:localhost:9000 -and then have your phone go to http://hostname.local:9001/ +*Multi-modal* because screenshots, charts, and graphs are necessary, not to mention delightful. -## CLI Usage +*Multi-model* to benefit from all the innovation going on. -Shelley can be used as a command-line tool with the following commands: +*Single-user* because it makes sense to bring the agent to the compute. -### Global Flags +# Architecture -- `--db `: Path to SQLite database file (default: "shelley.db") -- `--model `: LLM model to use (use `predictable` for testing). Run `shelley models` to see available models. -- `--debug`: Enable debug logging +The technical stack is Go for the backend, SQLite for storage, and Typescript +and React for the UI. -### Commands +The data model is that Conversations have Messages, which might be from the +user, the model, the tools, or the harness. All of that is stored in the +database, and we use a SSE endpoint to keep the UI updated. -#### `serve` - Start Web Server +# History -Starts the web server for the browser-based interface. +Shelley is partially based on our previous coding agent effort, [Sketch](https://github.com/boldsoftware/sketch). -```bash -shelley serve --port 9000 -``` +Unsurprisingly, much of Shelley is written by Shelley, Sketch, Claude Code, and Codex. -Flags: -- `--port `: Port to listen on (default: 9000) - -#### `models` - List Supported Models - -Lists all supported models and their required environment variables. - -```bash -shelley models -``` +# Open source -### Examples +Shelley is Apache licensed. We require a CLA for contributions. -```bash -# Start the web server -shelley serve --port 8080 +# Building Shelley -# List supported models -shelley models +Run `make`. Run `make serve` to start Shelley locally. -## Models and API Keys - -Use `shelley models` to see supported models, whether they are ready, and the environment variables required for each. - -Common env vars: - -- `ANTHROPIC_API_KEY`: Required for Claude models. -- `OPENAI_API_KEY`: Required for OpenAI models. -- `FIREWORKS_API_KEY`: Required for Fireworks models. +## Dev Tricks -Notes: +If you want to see how mobile looks, and you're on your home +network where you've got mDNS working fine, you can +run -- Run `shelley models` to see which model is the default and which are available. -- `predictable` is a built-in test model and requires no API keys. +``` +socat TCP-LISTEN:9001,fork TCP:localhost:9000 ```