# Jack Cloud

> Deploy web services to the cloud with Jack. Use when: you need to create APIs, websites, or backends and deploy them live. Teaches: project creation, deployment, databases, logs, and all Jack Cloud services.

- Skill: `kbarbel640-del/jack-cloud` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add kbarbel640-del/jack-cloud`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kbarbel640-del/jack-cloud/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: kbarbel640-del (https://skillmd.com/u/kbarbel640-del)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/kbarbel640-del/jack-cloud

---


# Jack Cloud — Deploy Anything from the Terminal

Jack deploys Cloudflare Workers projects in one command. Create an API, add a database, ship it live — all from the terminal.

## Install

```bash
npm i -g @getjack/jack
jack login
```

## MCP Tools

If your agent has `mcp__jack__*` tools available, prefer those over CLI commands. They return structured JSON and are tracked automatically. The CLI equivalents are noted below for agents without MCP.

---

## Create & Deploy a Project

```bash
jack new my-api
```

This creates a project from a template, deploys it, and prints the live URL.

**Pick a template** when prompted (or pass `--template`):

| Template | What you get |
|----------|-------------|
| `api` | Hono API with example routes |
| `miniapp` | Full-stack app with frontend |
| `simple-api-starter` | Minimal API starting point |

**MCP:** `mcp__jack__create_project` with `name` and `template` params.

After creation, your project is live at `https://<slug>.runjack.xyz`.

---

## Deploy Changes

After editing code, push changes live:

```bash
jack ship
```

For machine-readable output (useful in scripts and agents):

```bash
jack ship --json
```

Builds the project and deploys to production. Takes a few seconds.

**MCP:** `mcp__jack__deploy_project`

---

## Check Status

```bash
jack info
```

Shows: live URL, last deploy time, attached services (databases, storage, etc.).

**MCP:** `mcp__jack__get_project_status`

---

## Database (D1)

### Create a Database

```bash
jack services db create
```

Adds a D1 database to your project. The binding is automatically configured in `wrangler.jsonc`.

**MCP:** `mcp__jack__create_database`

### Query Data

```bash
jack db execute "SELECT * FROM users LIMIT 10"
```

For JSON output:

```bash
jack db execute --json "SELECT * FROM users LIMIT 10"
```

### Write Data

```bash
jack db execute --write "INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')"
```

### Create Tables

```bash
jack db execute --write "CREATE TABLE posts (id INTEGER PRIMARY KEY, title TEXT, body TEXT, created_at TEXT DEFAULT CURRENT_TIMESTAMP)"
```

### View Schema

```bash
jack db execute "SELECT name FROM sqlite_master WHERE type='table'"
jack db execute "PRAGMA table_info(users)"
```

**MCP:** `mcp__jack__execute_sql` — set `allow_write: true` for writes. Destructive operations (DROP, TRUNCATE) are blocked by default.

### Deploy After Schema Changes

After creating tables or modifying schema, redeploy so your worker code can use them:

```bash
jack ship
```

---

## Logs

Stream production logs to debug issues:

```bash
jack logs
```

Shows real-time request/response logs. Press Ctrl+C to stop.

**MCP:** `mcp__jack__tail_logs` with `duration_ms` and `max_events` params for a bounded sample.

---

## Common Workflow: API with Database

```bash
# 1. Create project
jack new my-api --template api

# 2. Add database
jack services db create

# 3. Create tables
jack db execute --write "CREATE TABLE items (id INTEGER PRIMARY KEY, name TEXT, created_at TEXT DEFAULT CURRENT_TIMESTAMP)"

# 4. Edit src/index.ts — add routes that query the DB
#    Access DB via: c.env.DB (the D1 binding)

# 5. Deploy
jack ship

# 6. Verify
curl https://my-api.runjack.xyz/api/items
```

---

## Secrets

Store API keys and sensitive values:

```bash
# Set a secret (prompts for value)
jack secrets set STRIPE_SECRET_KEY

# Set multiple
jack secrets set API_KEY WEBHOOK_SECRET

# List secrets (names only, values hidden)
jack secrets list
```

Secrets are available in your worker as `c.env.SECRET_NAME`. Redeploy after adding secrets:

```bash
jack ship
```

---

## Project Structure

```
my-project/
├── src/
│   └── index.ts          # Worker entry point
├── wrangler.jsonc        # Config: bindings, routes, compatibility
├── package.json
└── .jack/
    └── project.json      # Links to Jack Cloud
```

- `wrangler.jsonc` defines D1 bindings, environment vars, compatibility flags
- `.jack/project.json` links the local directory to your Jack Cloud project
- `src/index.ts` is the main entry point — typically a Hono app

---

## Advanced Services

### Storage (R2)

```bash
jack services storage create          # Create R2 bucket
jack services storage list            # List buckets
jack services storage info            # Bucket details
```

Access in worker via `c.env.BUCKET` binding. Use for file uploads, images, assets.

**MCP:** `mcp__jack__create_storage_bucket`, `mcp__jack__list_storage_buckets`, `mcp__jack__get_storage_info`

### Vector Search (Vectorize)

```bash
jack services vectorize create                    # Create index (768 dims, cosine)
jack services vectorize create --dimensions 1536  # Custom dimensions
jack services vectorize list
jack services vectorize info
```

Access via `c.env.VECTORIZE_INDEX` binding. Use for semantic search, RAG, embeddings.

**MCP:** `mcp__jack__create_vectorize_index`, `mcp__jack__list_vectorize_indexes`, `mcp__jack__get_vectorize_info`

### Cron Scheduling

```bash
jack services cron create "*/15 * * * *"   # Every 15 minutes
jack services cron create "0 * * * *"      # Every hour
jack services cron list
jack services cron test "0 9 * * MON"      # Validate + show next runs
```

Your worker needs a `scheduled()` handler or `POST /__scheduled` route.

**MCP:** `mcp__jack__create_cron`, `mcp__jack__list_crons`, `mcp__jack__test_cron`

### Custom Domains

```bash
jack domain connect app.example.com      # Reserve domain
jack domain assign app.example.com       # Assign to current project
jack domain unassign app.example.com     # Unassign
jack domain disconnect app.example.com   # Fully remove
```

Follow the DNS instructions printed after `assign`. Typically add a CNAME record.

---

## List Projects

```bash
jack ls           # List all your projects
jack info my-api  # Details for a specific project
jack open my-api  # Open in browser
```

**MCP:** `mcp__jack__list_projects` with optional `filter` (all, local, deployed, cloud).

---

## Troubleshooting

| Problem | Fix |
|---------|-----|
| "Not authenticated" | Run `jack login` |
| "No wrangler config found" | Run from a jack project directory |
| "Database not found" | Run `jack services db create` |
| Deploy fails | Check `jack logs` for errors, fix code, `jack ship` again |
| Need to start over | `jack new` creates a fresh project |

---

## Reference

- [Services deep dive](reference/services-guide.md) — detailed patterns for each service
- [Jack documentation](https://docs.getjack.org)

