# Chaski > Notification infrastructure that runs as a Worker of its own on your Cloudflare account, one per environment, dashboard included. Your app sends to it over a service binding and mounts `userRoutes()` from `chaskijs`, so its frontend reads the signed-in user’s feed, devices and preferences. It sends email, web push, iOS, macOS, Android and Windows push and in-app notifications, with templates, preferences, scheduling and retries. Open source under the MIT license, published on npm as `chaskijs`. To set Chaski up in a project, follow the agent skill at https://chaski.sh/skill/SKILL.md. ## Getting started - [Introduction](https://chaski.sh/docs/index.md): Chaski is notification infrastructure that runs as a Worker of its own on your Cloudflare account, dashboard included. - [Install](https://chaski.sh/docs/install.md): Create a Chaski project and deploy it as a Worker of its own, with two commands and Cloudflare Access. - [Connect your app](https://chaski.sh/docs/connect.md): Bind your app’s Worker to Chaski, send over RPC, and mount the routes your frontend calls for the signed-in user. - [Set up with an agent](https://chaski.sh/docs/agents.md): Hand Chaski’s setup to your coding agent with one prompt, or add the Chaski skill to your repository. - [Local development](https://chaski.sh/docs/local-development.md): Run Chaski and your app on your machine with wrangler dev, against a local database, with every email kept on disk. ## Guides - [Sending](https://chaski.sh/docs/sending.md): One call records a notification and fans it out to every channel its template turns on, through your queue. - [Scheduling](https://chaski.sh/docs/scheduling.md): Send a notification later, at a time with its offset. A Workflow holds it through deploys until then. - [Templates](https://chaski.sh/docs/templates.md): Each notification type has a template with content for each channel, in each language it sends in, written in Liquid and edited in the dashboard. - [Preferences](https://chaski.sh/docs/preferences.md): Contacts turn channels off and mute notification types. Chaski checks their choices before every send. - [Channels](https://chaski.sh/docs/channels.md): Email, in-app and push, web, iOS, macOS, Android and Windows. Each channel is set up from the dashboard, and is on once it has settings. - [Browser clients](https://chaski.sh/docs/browser-clients.md): chaskijs/client, chaskijs/sw and chaskijs/react give your frontend the signed-in user’s feed, push and preferences. - [Dashboard and sign-in](https://chaski.sh/docs/dashboard.md): The Chaski Worker serves its dashboard at its own URL, behind Cloudflare Access. - [Environments](https://chaski.sh/docs/environments.md): One Chaski Worker per environment of your app, each with resources of its own, from one project. ## Reference - [Configuration](https://chaski.sh/docs/configuration.md): The bindings, vars and secret of the Chaski Worker, the settings its dashboard keeps, and the options of userRoutes(). - [API](https://chaski.sh/docs/api.md): The API your app calls over its binding to Chaski, and the user routes its frontend calls. - [Errors](https://chaski.sh/docs/errors.md): Every error Chaski throws is a ChaskiError with a code, and the same codes answer from its routes. ## Agent skill - [SKILL.md](https://chaski.sh/skill/SKILL.md): Sets up a Chaski Worker next to an app and connects the app and its frontend, audits the notifications a codebase sends and plans moving them onto Chaski, and fixes a setup that fails.