Settings: add dedicated DAV/Pushover tabs, fix CalDAV/CardDAV bugs
- Add admin DAV tab (rename from CalDAV/CardDAV) and Pushover tab
- Add per-user Pushover tab (User Key only; App Token stays admin-managed)
- Remove system-wide CalDAV/CardDAV fallback — per-user config only
- Rewrite contacts_tool.py using httpx directly (caldav 2.x dropped AddressBook)
- Fix CardDAV REPORT/PROPFIND using SOGo URL pattern
- Fix CalDAV/CardDAV test endpoints (POST method, URL scheme normalization)
- Fix Show Password button — API now returns actual credential values
- Convert Credentials tab to generic key-value store; dedicated keys
(CalDAV, Pushover, trusted_proxy) excluded via _DEDICATED_CRED_KEYS
This commit is contained in:
77
README.md
77
README.md
@@ -1,29 +1,30 @@
|
||||
# oAI-Web - Personal AI Agent
|
||||
|
||||
A secure, self-hosted personal AI agent powered by OpenRouter, Anthropic and OpenAI. Handles calendar, email, files, web research, and Telegram - controlled by you, running on your own hardware.
|
||||
A secure, self-hosted personal AI agent powered by Claude. Handles calendar, email, files, web research, and Telegram - controlled by you, running on your own hardware.
|
||||
|
||||
## Features
|
||||
|
||||
- **Chat interface** - conversational UI via browser, with model selector
|
||||
- **CalDAV** - read and write calendar events
|
||||
- **CalDAV** - read and write calendar events (per-user credentials, configured in Settings)
|
||||
- **CardDAV / Contacts** - search and manage contacts from your CardDAV server
|
||||
- **Email** - read inbox, send replies (whitelist-managed recipients)
|
||||
- **Filesystem** - read/write files in declared sandbox directories
|
||||
- **Filesystem** - read/write files in your personal data folder
|
||||
- **Web access** - tiered: whitelisted domains always allowed, others on request
|
||||
- **Push notifications** - Pushover for iOS/Android
|
||||
- **Push notifications** - Pushover for iOS/Android (set your own User Key in Settings)
|
||||
- **Telegram** - send and receive messages via your own bot
|
||||
- **Webhooks** - trigger agents from external services (iOS Shortcuts, GitHub, Home Assistant, etc.)
|
||||
- **Monitors** - page-change and RSS feed monitors that dispatch agents automatically
|
||||
- **Scheduled tasks** - cron-based autonomous tasks with declared permission scopes
|
||||
- **Agents** - goal-oriented runs with model selection and full run history
|
||||
- **Audit log** - every tool call logged, append-only
|
||||
- **Multi-user** - each user has their own credentials and settings
|
||||
|
||||
oAI-Web also has an extensive built in help function. This makes it easy for both admins and normal useres to learn and use oAI-Web in the best way possible.
|
||||
|
||||
---
|
||||
|
||||
## Requirements
|
||||
|
||||
- Docker and Docker Compose
|
||||
- An API key from [Anthropic](https://console.anthropic.com) and/or [OpenRouter](https://openrouter.ai) and/or [OpenAI](https://openai.com)
|
||||
- An API key from [Anthropic](https://console.anthropic.com) and/or [OpenRouter](https://openrouter.ai)
|
||||
- A PostgreSQL-compatible host (included in the compose file)
|
||||
|
||||
---
|
||||
@@ -247,30 +248,51 @@ The file is mounted read-only into the container. Changes take effect on the nex
|
||||
|
||||
---
|
||||
|
||||
## First Run - Settings
|
||||
## Your Settings
|
||||
|
||||
After the setup wizard, go to **Settings** to configure your services.
|
||||
After logging in, go to **Settings** to configure your personal services. Each user has their own credentials — nothing is shared with other users.
|
||||
|
||||
### Credentials (admin only)
|
||||
### CalDAV / CardDAV
|
||||
|
||||
Add credentials for the services you use. Common keys:
|
||||
Set up your personal calendar and contacts server under **Settings → CalDAV / CardDAV**:
|
||||
|
||||
| Key | Example | Used by |
|
||||
|-----|---------|---------|
|
||||
| `anthropic_api_key` | `sk-ant-...` | Claude (Anthropic) |
|
||||
| `openrouter_api_key` | `sk-or-...` | OpenRouter models |
|
||||
| `mailcow_host` | `mail.yourdomain.com` | CalDAV, Email |
|
||||
| `mailcow_username` | `you@yourdomain.com` | CalDAV, Email |
|
||||
| `mailcow_password` | your IMAP password | CalDAV, Email |
|
||||
| `caldav_calendar_name` | `personal` | CalDAV |
|
||||
| `pushover_app_token` | from Pushover dashboard | Push notifications |
|
||||
| `telegram_bot_token` | from @BotFather | Telegram |
|
||||
- Enter your server URL (e.g. `mail.example.com`), username, and password
|
||||
- Optionally specify a calendar name (leave blank for the default calendar)
|
||||
- For CardDAV (contacts): tick *Same server as CalDAV* to reuse your credentials, or enter separate details
|
||||
- Use the **Test** buttons to verify your connection before saving
|
||||
- Enable **Allow contact writes** if you want agents to be able to create and update contacts
|
||||
|
||||
### Whitelists
|
||||
There is no system-wide fallback — if you don't configure it, calendar and contacts tools won't be available to your agents.
|
||||
|
||||
- **Email whitelist** - addresses the agent is allowed to send email to
|
||||
- **Web whitelist** - domains always accessible to the agent (Tier 1)
|
||||
- **Filesystem sandbox** - directories the agent is allowed to read/write
|
||||
### Pushover
|
||||
|
||||
To receive push notifications on your iOS or Android device:
|
||||
|
||||
1. Create a free account at [pushover.net](https://pushover.net)
|
||||
2. Copy your **User Key** from the dashboard
|
||||
3. Go to **Settings → Pushover** and save your User Key
|
||||
|
||||
The app is already registered by your admin — you only need your own User Key.
|
||||
|
||||
### Webhooks
|
||||
|
||||
Create inbound webhooks under **Settings → Webhooks** to trigger your agents from external services:
|
||||
|
||||
- Assign a name and target agent, then copy the secret token shown at creation (it's shown only once)
|
||||
- **POST trigger**: send `{"message": "your message"}` to `/webhook/{token}`
|
||||
- **GET trigger**: visit `/webhook/{token}?q=your+message` — ideal for iOS Shortcuts URL actions
|
||||
- Enable or disable webhooks without deleting them
|
||||
|
||||
### Telegram
|
||||
|
||||
Set your personal bot token under **Settings → Telegram** (or **Settings → Profile → Telegram Bot Token**) if you want your own Telegram bot. Your chat ID must be whitelisted by the admin before messages are processed.
|
||||
|
||||
### Email Accounts
|
||||
|
||||
Set up your own email accounts under **Settings → Email Accounts**:
|
||||
|
||||
- **Trigger account** — dispatches agents based on keyword rules in incoming emails
|
||||
- **Handling account** — a dedicated AI agent reads and handles each incoming email
|
||||
|
||||
---
|
||||
|
||||
@@ -290,9 +312,12 @@ docker compose up -d
|
||||
| `/` | Chat - send messages, select model, view tool activity |
|
||||
| `/tasks` | Scheduled tasks - cron-based autonomous tasks |
|
||||
| `/agents` | Agents - goal-oriented runs with model selection and run history |
|
||||
| `/monitors` | Monitors - page-change watchers and RSS feed monitors |
|
||||
| `/files` | Files - browse, download, and manage your personal data folder |
|
||||
| `/audit` | Audit log - filterable view of every tool call |
|
||||
| `/settings` | Credentials, whitelists, agent config, Telegram, and more |
|
||||
| `/settings` | Your personal settings: CalDAV, CardDAV, Pushover, Webhooks, Telegram, Email Accounts, and more |
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
||||
|
||||
Reference in New Issue
Block a user