Astro is self hosted software for building apps on top of AI: structured memory, dashboards, scheduled Python and Slack tasks, and MCP—without handing your corpus to a third-party host.

Quick Start

Make sure Docker is installed and running, then:

curl -fsSL https://runastro.sh/install.sh | bash

That’s it. Astro will be running at http://localhost:8000.

What the Installer Does

  1. Checks that Docker is installed and the daemon is running
  2. Removes any existing Astro container and old images
  3. Pulls the latest marksnyder/astro image from Docker Hub
  4. Creates persistent data directories at ~/astro-data
  5. Starts the container with proper volume mounts

Your data is stored on the host at ~/astro-data and mounted into the container:

Host Path Container Path Contents
~/astro-data/data /app/data SQLite database, ChromaDB vector store, images
~/astro-data/documents /app/documents Uploaded documents (PDF, DOCX, etc.)
~/astro-data/tailscale /var/lib/tailscale Tailscale authentication state

Because all data lives in host-mounted volumes, you can tear down and rebuild the container freely without losing anything.

Updating

To update to the latest version, just run the install command again:

curl -fsSL https://runastro.sh/install.sh | bash

The installer automatically removes the old container and image before pulling the latest.

Configuration Options

The installer accepts flags and environment variables:

Flags

curl -fsSL https://runastro.sh/install.sh | bash -s -- [OPTIONS]
Flag Default Description
--port PORT 8000 Host port to expose
--data-dir DIR ~/astro-data Persistent data directory
--ts-authkey KEY none Tailscale auth key (required on first run)
--ts-hostname NAME astro Tailscale hostname
--ts-serve-https BOOL true Enable Tailscale HTTPS proxy

Environment Variables

Alternatively, set environment variables before piping to bash:

PORT=9000 TS_AUTHKEY=tskey-auth-... \
  SLACK_BOT_TOKEN=xoxb-your-bot-token \
  curl -fsSL https://runastro.sh/install.sh | bash

Tailscale Setup

Astro includes built-in Tailscale support for secure remote access. On first run, provide your Tailscale auth key:

curl -fsSL https://runastro.sh/install.sh | bash -s -- \
  --ts-authkey tskey-auth-XXXXXXX

After the first run, the Tailscale state is persisted in ~/astro-data/tailscale, so subsequent runs don’t need the key again.

Once connected, Astro is available at:

You can create a Tailscale auth key at login.tailscale.com/admin/settings/keys.

Slack (Agent Tasks)

Agent Tasks deliver markdown instructions to Slack channels via a bot you configure:

Variable Purpose
SLACK_BOT_TOKEN Bot token from your Slack app
SLACK_DEFAULT_CHANNEL_ID Default channel for new tasks

Pass them when starting the container, for example:

SLACK_BOT_TOKEN=xoxb-your-token \
  curl -fsSL https://runastro.sh/install.sh | bash

The default channel can also be set in Settings → Agent tasks (Slack) in the web UI. See Slack Integration for setup details.

First Run

After installation:

  1. Open http://localhost:8000 — your universe dashboard is the default home tab
  2. Create markdowns, scripts, or tables; pin what you use often
  3. Configure Slack in Settings for Agent Tasks; schedule Python Tasks against saved scripts
  4. Point MCP clients at http://localhost:8000/mcp/ (see docs)

Embeddings are handled locally; no external API keys are required for search.

Connecting AI Agents

Astro exposes an MCP (Model Context Protocol) server so AI agents can discover and use your knowledge base.

MCP endpoint: http://localhost:8000/mcp/

Point any MCP-compatible client at this URL. For example, in a Cursor MCP config:

{
  "mcpServers": {
    "astro": {
      "url": "http://localhost:8000/mcp/"
    }
  }
}

There’s also a simple REST search endpoint for scripts and lightweight integrations:

GET http://localhost:8000/api/search?q=your+query&k=5

Useful Commands

docker logs -f astro                    # view live logs
docker exec astro tailscale status      # check Tailscale connectivity
docker stop astro                       # stop the container
docker rm -f astro                      # remove the container

Building from Source

If you prefer to build locally instead of pulling from Docker Hub:

git clone https://github.com/marksnyder/astro.git
cd astro
./deploy/build.sh    # builds frontend + Docker image
./deploy/run.sh      # runs the container

Requirements