# Astris > Astris runs the apps your coding agent builds: apps, databases, storage and domains on one flat monthly plan. Each link is the Markdown copy of a docs page. ## Start - [Docs](https://astris.run/docs.md): How to connect Claude Code, Cursor or Codex to Astris, what each resource does, and what each refusal from the API means. ## Quickstarts - [Quickstart for Claude Code](https://astris.run/docs/quickstart/claude-code.md): Connect Claude Code to Astris with the Astris MCP and the Astris Skill, then deploy your first app. - [Quickstart for Cursor](https://astris.run/docs/quickstart/cursor.md): Connect Cursor to Astris with the Astris MCP and the Astris Skill, then deploy your first app. - [Quickstart for Codex](https://astris.run/docs/quickstart/codex.md): Connect Codex to Astris with the Astris MCP and the Astris Skill, then deploy your first app. ## Guides - [Move an app to Astris](https://astris.run/docs/move-an-app.md): Move an app from your current host to Astris, with a checklist and one prompt for your coding agent. ## Resources - [Apps](https://astris.run/docs/apps.md): Deploy web apps, workers, cron jobs and static sites from a Git repository or a Dockerfile, and manage them. - [Databases](https://astris.run/docs/databases.md): Create a Postgres or Redis database for your apps, read its status, and delete it. - [Storage](https://astris.run/docs/storage.md): Create S3-compatible storage buckets, read their credentials, issue a new key, and delete an empty bucket. - [Domains](https://astris.run/docs/domains.md): Give a web app an address on astris.live, or point a hostname you own at it and verify it. - [Logs](https://astris.run/docs/logs.md): Read the runtime and deploy logs of an app, and ask Astris why a deploy failed. - [API keys](https://astris.run/docs/keys.md): Create and revoke the API keys your coding tool and the Astris CLI use. - [Usage and plan pools](https://astris.run/docs/usage.md): The memory, CPU and disk each plan gives, what your apps use, and what happens when a new one does not fit. - [Workers and cron jobs](https://astris.run/docs/workers.md): Run a command as a worker with no address, or on a five-field schedule as a cron app. - [Static sites](https://astris.run/docs/static-sites.md): Serve HTML, CSS and JavaScript files from a Git repository, with an optional single-page app mode. - [Environment variables](https://astris.run/docs/environment.md): Set the environment variables of an app as one set, and read their names without their values. - [Backups](https://astris.run/docs/backups.md): What Astris backs up, and how to run a backup now and list the backups of a Postgres database. ## Refusals - [Refusals](https://astris.run/docs/errors.md): Every refusal the Astris API sends, with its HTTP status, its exact body and what to do. - [unauthorized (401)](https://astris.run/docs/errors/unauthorized.md): The API did not accept the key: it is missing, unknown or revoked. - [read_only_key (403)](https://astris.run/docs/errors/read_only_key.md): A read-only key asked for a change. - [project_scope (403)](https://astris.run/docs/errors/project_scope.md): A key bound to one project asked to create a project. - [upgrade_required (403)](https://astris.run/docs/errors/upgrade_required.md): The account has no plan, or a new app or database does not fit its pool. - [preview (403)](https://astris.run/docs/errors/preview.md): Checkout needs an invitation while Astris is in private preview. - [compose_unavailable (403)](https://astris.run/docs/errors/compose_unavailable.md): Compose stacks are not available in the private preview. - [bucket_limit (403)](https://astris.run/docs/errors/bucket_limit.md): The account has reached its storage bucket limit. - [not_found (404)](https://astris.run/docs/errors/not_found.md): Nothing with that id is on this account. - [bad_request (400)](https://astris.run/docs/errors/bad_request.md): The API refused the request body or a field in it. - [document_required (400)](https://astris.run/docs/errors/document_required.md): A compose redeploy was sent without its compose file. - [confirm_required (400)](https://astris.run/docs/errors/confirm_required.md): An account delete was sent without the confirm phrase. - [confirm_mismatch (400)](https://astris.run/docs/errors/confirm_mismatch.md): An account delete was sent with the wrong confirm phrase. - [conflict (409)](https://astris.run/docs/errors/conflict.md): A name or hostname is taken, a project is not empty, or the account cannot be deleted yet. - [plan_active (409)](https://astris.run/docs/errors/plan_active.md): Checkout was asked for an account that already has a plan. - [bucket_not_empty (409)](https://astris.run/docs/errors/bucket_not_empty.md): A storage bucket that still holds objects was not deleted. - [payload_too_large (413)](https://astris.run/docs/errors/payload_too_large.md): A deploy hook received a body that is too large. - [rate_limited (429)](https://astris.run/docs/errors/rate_limited.md): Too many requests in a short time. - [internal (500)](https://astris.run/docs/errors/internal.md): Astris failed on its side while it handled the request. - [upstream (502)](https://astris.run/docs/errors/upstream.md): The platform did not accept the change. - [unavailable (503)](https://astris.run/docs/errors/unavailable.md): Astris cannot complete the request right now. - [storage_unavailable (503)](https://astris.run/docs/errors/storage_unavailable.md): New storage buckets cannot be made right now. - [Pre-flight check](https://astris.run/docs/errors/preflight.md): What the pre-flight check reads in your repository, its pass, fixable and refuse verdicts, and what to change.