mirror of
https://github.com/coalaura/whiskr.git
synced 2025-09-08 17:06:42 +00:00
typo
This commit is contained in:
72
README.md
72
README.md
@@ -59,78 +59,6 @@ go build -o whiskr
|
||||
```
|
||||
3. Open `http://localhost:3443` in your browser.
|
||||
|
||||
Got it 👍 — your README currently mentions “Authentication (optional)” but doesn’t explain how to actually enable it. Since you’ve got the `Environment` struct with `Authentication.Enabled`, `Users`, and the HMAC-based token signing/verification, we can add a **Setup Authentication** section that explains:
|
||||
|
||||
- How to enable it in `config.yml`
|
||||
- How to generate bcrypt password hashes
|
||||
- How tokens are issued/verified
|
||||
- How to use them in requests
|
||||
|
||||
Here’s an updated README with the new section added:
|
||||
|
||||
---
|
||||
|
||||
# whiskr
|
||||
|
||||

|
||||
|
||||
whiskr is a private, self-hosted web chat interface for interacting with AI models via [OpenRouter](https://openrouter.ai/).
|
||||
|
||||
## Features
|
||||
|
||||
- Private and self-hosted (data stored in localStorage)
|
||||
- Supports any model available on your OpenRouter account
|
||||
- Real-time streaming responses
|
||||
- Edit, delete, or copy any message
|
||||
- Persistent settings for model, temperature, and other parameters
|
||||
- Full conversation control including clearing and modifying messages
|
||||
- Smooth UI updates with [morphdom](https://github.com/patrick-steele-idem/morphdom), selections, images, and other state are preserved during updates
|
||||
- Easy model selection:
|
||||
- Tags indicate if a model supports **tools**, **vision**, or **reasoning**
|
||||
- Search field with fuzzy matching to quickly find models
|
||||
- Models are listed newest -> oldest
|
||||
- Reasoning effort control
|
||||
- Web search tools (set the `EXA_TOKEN` to enable):
|
||||
- `search_web`: search via Exa in auto mode; returns up to 10 results with short summaries
|
||||
- `fetch_contents`: fetch page contents for one or more URLs via Exa /contents
|
||||
- Structured JSON output
|
||||
- Statistics for messages (provider, ttft, tps and token count)
|
||||
- Import and export of chats as JSON files
|
||||
- **Authentication (optional)**
|
||||
|
||||
## TODO
|
||||
|
||||
- Image and file attachments
|
||||
|
||||
## Built With
|
||||
|
||||
**Frontend**
|
||||
- Vanilla JavaScript and CSS
|
||||
- [morphdom](https://github.com/patrick-steele-idem/morphdom) for DOM diffing without losing state
|
||||
- [marked](https://github.com/markedjs/marked) for Markdown rendering
|
||||
- [highlight.js](https://highlightjs.org/) for syntax highlighting
|
||||
- Fonts: [Inter](https://rsms.me/inter/) (UI), [Comic Code](https://tosche.net/fonts/comic-code) (code)
|
||||
- Icons: [SVGRepo](https://www.svgrepo.com/)
|
||||
- Color palette: [Catppuccin Macchiato](https://catppuccin.com/)
|
||||
|
||||
**Backend**
|
||||
- Go
|
||||
- [OpenRouter](https://openrouter.ai/) for model list and completions
|
||||
- [Exa](https://exa.ai/) for web search and content retrieval (`/search`, `/contents`)
|
||||
|
||||
## Getting Started
|
||||
|
||||
1. Copy `example.config.yml` to `config.yml` and set `tokens.openrouter`:
|
||||
```bash
|
||||
cp example.config.yml config.yml
|
||||
```
|
||||
2. Build and run:
|
||||
```bash
|
||||
go build -o whiskr
|
||||
./whiskr
|
||||
```
|
||||
3. Open `http://localhost:3443` in your browser.
|
||||
|
||||
## Authentication (optional)
|
||||
|
||||
whiskr supports simple, stateless authentication. If enabled, users must log in with a username and password before accessing the chat. Passwords are hashed using bcrypt (12 rounds). If `authentication.enabled` is set to `false`, whiskr will not prompt for authentication at all.
|
||||
|
Reference in New Issue
Block a user