Skip to content

Commit f7df69f

Browse files
committed
feat: add custom domain clarissa.run and bump to v1.0.1
- Update astro.config.mjs with new site URL - Add CNAME file for GitHub Pages custom domain - Add Open Graph and Twitter Card meta tags - Add JSON-LD structured data for SEO - Bump version to 1.0.1 in package.json files
1 parent ab73357 commit f7df69f

File tree

13 files changed

+384
-45
lines changed

13 files changed

+384
-45
lines changed

README.md

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -138,19 +138,51 @@ mv clarissa-macos-arm64 /usr/local/bin/clarissa
138138

139139
## Configuration
140140

141-
Set your OpenRouter API key as an environment variable:
141+
Create a config file at `~/.clarissa/config.json`:
142+
143+
```bash
144+
mkdir -p ~/.clarissa
145+
echo '{"apiKey": "your_api_key_here"}' > ~/.clarissa/config.json
146+
```
147+
148+
Or set your OpenRouter API key as an environment variable:
142149

143150
```bash
144151
export OPENROUTER_API_KEY=your_api_key_here
145152
```
146153

147-
Optional environment variables:
154+
Optional settings (in config.json or as environment variables):
155+
156+
| Config Key | Env Variable | Default | Description |
157+
|------------|--------------|---------|-------------|
158+
| `apiKey` | `OPENROUTER_API_KEY` | (required) | Your OpenRouter API key |
159+
| `model` | `OPENROUTER_MODEL` | `anthropic/claude-sonnet-4` | Default model to use |
160+
| `maxIterations` | `MAX_ITERATIONS` | `10` | Maximum tool execution iterations |
161+
| `debug` | `DEBUG` | `false` | Enable debug logging |
162+
| `mcpServers` | - | `{}` | MCP servers to auto-load (see below) |
163+
164+
### MCP Server Configuration
165+
166+
Add MCP servers to your config file to auto-load them on startup:
167+
168+
```json
169+
{
170+
"apiKey": "your_api_key_here",
171+
"mcpServers": {
172+
"filesystem": {
173+
"command": "npx",
174+
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
175+
},
176+
"github": {
177+
"command": "npx",
178+
"args": ["-y", "@modelcontextprotocol/server-github"],
179+
"env": { "GITHUB_TOKEN": "your_token" }
180+
}
181+
}
182+
}
183+
```
148184

149-
| Variable | Default | Description |
150-
|----------|---------|-------------|
151-
| `OPENROUTER_MODEL` | `anthropic/claude-sonnet-4` | Default model to use |
152-
| `MAX_ITERATIONS` | `10` | Maximum tool execution iterations per request |
153-
| `DEBUG` | `false` | Enable debug logging |
185+
Use `/mcp` to view connected servers and `/tools` to see available tools.
154186

155187
## Usage
156188

docs/astro.config.mjs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import { defineConfig } from 'astro/config';
22

33
export default defineConfig({
4-
site: 'https://cameronrye.github.io',
5-
base: '/clarissa/',
4+
site: 'https://clarissa.run',
65
trailingSlash: 'always',
76
build: {
87
assets: '_assets'

docs/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "clarissa-docs",
33
"type": "module",
4-
"version": "1.0.0",
4+
"version": "1.0.1",
55
"scripts": {
66
"dev": "astro dev",
77
"build": "astro build",

docs/public/CNAME

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
clarissa.run

docs/src/components/Features.astro

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ const features = [
3939
icon: 'shield',
4040
title: 'Tool Confirmation',
4141
description: 'Approve or reject potentially dangerous operations before execution'
42+
},
43+
{
44+
icon: 'gauge',
45+
title: 'Context Management',
46+
description: 'Automatic token tracking with smart truncation when approaching limits'
4247
}
4348
];
4449
---
@@ -93,6 +98,11 @@ const features = [
9398
<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" /><polyline points="9 12 11 14 15 10" />
9499
</svg>
95100
)}
101+
{feature.icon === 'gauge' && (
102+
<svg viewBox="0 0 24 24" fill="none" stroke="url(#icon-gradient)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
103+
<path d="M12 16v-4" /><path d="M12 8h.01" /><circle cx="12" cy="12" r="10" /><path d="m14.5 9.5-5 5" />
104+
</svg>
105+
)}
96106
</div>
97107
<h3>{feature.title}</h3>
98108
<p>{feature.description}</p>

docs/src/components/Hero.astro

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,9 @@ const base = import.meta.env.BASE_URL;
5656
<h1 class="hero-title">
5757
<span class="gradient-text">Clarissa</span>
5858
</h1>
59-
<p class="hero-tagline">An AI-powered terminal assistant with tool execution capabilities</p>
59+
<p class="hero-tagline">AI agent for your terminal</p>
6060
<p class="hero-description">
61-
A command-line AI agent built with Bun and Ink. Powered by OpenRouter for access to Claude, GPT-4, Gemini, and more.
62-
Execute tools, manage files, run shell commands, and integrate with external services via MCP.
61+
Built with Bun and Ink. Access Claude, GPT-4, Gemini, and more through OpenRouter. Execute tools, run commands, and extend with MCP.
6362
</p>
6463
<div class="hero-actions">
6564
<a href={`${base}docs/installation/`} class="btn btn-primary">Get Started</a>

docs/src/components/QuickStart.astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ const steps = [
55
{
66
number: '1',
77
title: 'Install Clarissa',
8-
code: 'pnpm install -g clarissa'
8+
code: 'bun install -g clarissa'
99
},
1010
{
1111
number: '2',
1212
title: 'Set your API key',
13-
code: 'export OPENROUTER_API_KEY=your_key_here'
13+
code: 'mkdir -p ~/.clarissa && echo \'{"apiKey": "your_key"}\' > ~/.clarissa/config.json'
1414
},
1515
{
1616
number: '3',

docs/src/layouts/Base.astro

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ interface Props {
66
77
const { title, description = 'An AI-powered terminal assistant with tool execution capabilities' } = Astro.props;
88
const base = import.meta.env.BASE_URL;
9+
const siteUrl = import.meta.env.SITE;
10+
const pageTitle = title === 'Home' ? 'Clarissa' : `${title} | Clarissa`;
11+
const canonicalUrl = new URL(Astro.url.pathname, siteUrl);
12+
const ogImage = new URL(`${base}logo.svg`, siteUrl);
913
---
1014

1115
<!DOCTYPE html>
@@ -14,8 +18,51 @@ const base = import.meta.env.BASE_URL;
1418
<meta charset="UTF-8" />
1519
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
1620
<meta name="description" content={description} />
17-
<title>{title} | Clarissa</title>
21+
<link rel="canonical" href={canonicalUrl} />
22+
<title>{pageTitle}</title>
1823
<link rel="icon" type="image/svg+xml" href={`${base}logo.svg`} />
24+
25+
<!-- Open Graph -->
26+
<meta property="og:type" content="website" />
27+
<meta property="og:url" content={canonicalUrl} />
28+
<meta property="og:title" content={pageTitle} />
29+
<meta property="og:description" content={description} />
30+
<meta property="og:image" content={ogImage} />
31+
<meta property="og:site_name" content="Clarissa" />
32+
33+
<!-- Twitter Card -->
34+
<meta name="twitter:card" content="summary" />
35+
<meta name="twitter:title" content={pageTitle} />
36+
<meta name="twitter:description" content={description} />
37+
<meta name="twitter:image" content={ogImage} />
38+
39+
<!-- Structured Data -->
40+
<script is:inline type="application/ld+json" set:html={JSON.stringify({
41+
"@context": "https://schema.org",
42+
"@type": "SoftwareApplication",
43+
"name": "Clarissa",
44+
"description": "An AI-powered terminal assistant with tool execution capabilities. Built with Bun and powered by OpenRouter.",
45+
"url": siteUrl + base,
46+
"applicationCategory": "DeveloperApplication",
47+
"operatingSystem": "macOS, Linux, Windows",
48+
"license": "https://opensource.org/licenses/MIT",
49+
"author": {
50+
"@type": "Person",
51+
"name": "Cameron Rye",
52+
"url": "https://rye.dev"
53+
},
54+
"offers": {
55+
"@type": "Offer",
56+
"price": "0",
57+
"priceCurrency": "USD"
58+
},
59+
"sourceOrganization": {
60+
"@type": "Organization",
61+
"name": "GitHub",
62+
"url": "https://github.com/cameronrye/clarissa"
63+
}
64+
})} />
65+
1966
<link rel="preconnect" href="https://fonts.googleapis.com" />
2067
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
2168
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet" />

docs/src/pages/docs/configuration.astro

Lines changed: 72 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,63 +2,114 @@
22
import Docs from '../../layouts/Docs.astro';
33
---
44

5-
<Docs title="Configuration" description="Configure Clarissa with environment variables and settings">
5+
<Docs title="Configuration" description="Configure Clarissa with a config file or environment variables">
66
<h1>Configuration</h1>
77
<p>
8-
Clarissa is configured primarily through environment variables. The only required setting
9-
is your OpenRouter API key.
8+
Clarissa can be configured via a config file or environment variables.
9+
The only required setting is your OpenRouter API key.
1010
</p>
1111

1212
<h2>API Key Setup</h2>
1313
<p>
14-
Set your <a href="https://openrouter.ai/keys" target="_blank" rel="noopener">OpenRouter API key</a>
15-
as an environment variable:
14+
Get your API key from <a href="https://openrouter.ai/keys" target="_blank" rel="noopener">OpenRouter</a>.
1615
</p>
17-
<pre><code>export OPENROUTER_API_KEY=your_api_key_here</code></pre>
18-
19-
<p>To make this permanent, add it to your shell configuration file:</p>
20-
21-
<h3>Bash (~/.bashrc or ~/.bash_profile)</h3>
22-
<pre><code>echo 'export OPENROUTER_API_KEY=your_api_key_here' >> ~/.bashrc
23-
source ~/.bashrc</code></pre>
2416

25-
<h3>Zsh (~/.zshrc)</h3>
26-
<pre><code>echo 'export OPENROUTER_API_KEY=your_api_key_here' >> ~/.zshrc
27-
source ~/.zshrc</code></pre>
17+
<h3>Option 1: Config File (Recommended)</h3>
18+
<p>Create a config file at <code>~/.clarissa/config.json</code>:</p>
19+
<pre><code>mkdir -p ~/.clarissa
20+
echo '{{"apiKey": "your_api_key_here"}}' > ~/.clarissa/config.json</code></pre>
21+
22+
<h3>Option 2: Environment Variable</h3>
23+
<p>Set your API key as an environment variable:</p>
24+
<pre><code>export OPENROUTER_API_KEY=your_api_key_here</code></pre>
25+
<p>To make this permanent, add it to your shell configuration file (~/.zshrc or ~/.bashrc).</p>
2826

29-
<h2>Environment Variables</h2>
27+
<h2>Configuration Options</h2>
28+
<p>Settings can be specified in the config file or as environment variables. Environment variables take precedence.</p>
3029
<table>
3130
<thead>
3231
<tr>
33-
<th>Variable</th>
32+
<th>Config Key</th>
33+
<th>Env Variable</th>
3434
<th>Default</th>
3535
<th>Description</th>
3636
</tr>
3737
</thead>
3838
<tbody>
3939
<tr>
40+
<td><code>apiKey</code></td>
4041
<td><code>OPENROUTER_API_KEY</code></td>
4142
<td>(required)</td>
4243
<td>Your OpenRouter API key</td>
4344
</tr>
4445
<tr>
46+
<td><code>model</code></td>
4547
<td><code>OPENROUTER_MODEL</code></td>
4648
<td><code>anthropic/claude-sonnet-4</code></td>
4749
<td>Default model to use</td>
4850
</tr>
4951
<tr>
52+
<td><code>maxIterations</code></td>
5053
<td><code>MAX_ITERATIONS</code></td>
5154
<td><code>10</code></td>
5255
<td>Maximum tool execution iterations per request</td>
5356
</tr>
5457
<tr>
58+
<td><code>debug</code></td>
5559
<td><code>DEBUG</code></td>
5660
<td><code>false</code></td>
5761
<td>Enable debug logging</td>
5862
</tr>
5963
</tbody>
6064
</table>
6165

66+
<h3>Example Config File</h3>
67+
<pre><code set:html={`{
68+
"apiKey": "sk-or-...",
69+
"model": "anthropic/claude-sonnet-4",
70+
"maxIterations": 10,
71+
"debug": false,
72+
"mcpServers": {
73+
"filesystem": {
74+
"command": "npx",
75+
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
76+
}
77+
}
78+
}`} /></pre>
79+
80+
<h3>MCP Servers</h3>
81+
<p>
82+
Configure MCP (Model Context Protocol) servers to extend Clarissa with additional tools.
83+
Servers defined in <code>mcpServers</code> are automatically loaded on startup.
84+
</p>
85+
<table>
86+
<thead>
87+
<tr>
88+
<th>Property</th>
89+
<th>Type</th>
90+
<th>Description</th>
91+
</tr>
92+
</thead>
93+
<tbody>
94+
<tr>
95+
<td><code>command</code></td>
96+
<td>string</td>
97+
<td>Command to run the MCP server</td>
98+
</tr>
99+
<tr>
100+
<td><code>args</code></td>
101+
<td>string[]</td>
102+
<td>Arguments to pass to the command</td>
103+
</tr>
104+
<tr>
105+
<td><code>env</code></td>
106+
<td>object</td>
107+
<td>Environment variables for the server</td>
108+
</tr>
109+
</tbody>
110+
</table>
111+
<p>Use <code>/mcp</code> to view connected servers and <code>/tools</code> to see available tools.</p>
112+
62113
<h2>Available Models</h2>
63114
<p>
64115
Clarissa supports any model available through OpenRouter. Some popular options include:
@@ -119,6 +170,10 @@ source ~/.zshrc</code></pre>
119170
</tr>
120171
</thead>
121172
<tbody>
173+
<tr>
174+
<td><code>~/.clarissa/config.json</code></td>
175+
<td>Configuration file (API key, model, etc.)</td>
176+
</tr>
122177
<tr>
123178
<td><code>~/.clarissa/sessions/</code></td>
124179
<td>Saved conversation sessions (JSON files)</td>

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "clarissa",
3-
"version": "1.0.0",
3+
"version": "1.0.1",
44
"description": "An AI-powered terminal assistant with tool execution capabilities",
55
"author": "Cameron Rye <[email protected]> (https://rye.dev)",
66
"license": "MIT",

0 commit comments

Comments
 (0)