Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ ardrive \<command\> --help
[arconnect]: https://arconnect.io/
[kb-wallets]: https://ardrive.atlassian.net/l/c/FpK8FuoQ
[arweave-manifests]: https://github.com/ArweaveTeam/arweave/wiki/Path-Manifests
[example-manifest-webpage]: https://turbo-gateway.com/qozq9YIUPEHfZhoTp9DkBpJuA_KNULBnfLiMroj5pZI
[example-manifest-webpage]: https://arweave.net/qozq9YIUPEHfZhoTp9DkBpJuA_KNULBnfLiMroj5pZI
[arlocal]: https://github.com/textury/arlocal
[mozilla-mime-types]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
[viewblock]: https://viewblock.io/arweave/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ ardrive upload-file --content-type "application/x.arweave-manifest+json" --local
The returned `dataTxId` field on the created `file` entity will be the endpoint that the manifest can be found on Arweave, just as explained in the [manifest sections](#uploading-manifests) above:

```shell
https://turbo-gateway.com/{dataTxId}
https://turbo-gateway.com/{dataTxId}/custom-file-1
https://turbo-gateway.com/{dataTxId}/custom-file-2
https://arweave.net/{dataTxId}
https://arweave.net/{dataTxId}/custom-file-1
https://arweave.net/{dataTxId}/custom-file-2
```
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ e.g:

When the custom metadata is attached to the MetaData Transaction's GQL tags, they will become visible on any Arweave GQL gateway and also third party tools that read GQL data.

When these tags are added to the MetaData Transaction's Data JSON they can be read by downloading the JSON data directly from `https://turbo-gateway.com/METADATA_TX_ID`.
When these tags are added to the MetaData Transaction's Data JSON they can be read by downloading the JSON data directly from `https://arweave.net/METADATA_TX_ID`.

To add this custom metadata to your file metadata transactions, CLI users can pass custom metadata these parameters:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@ title: "Uploading Manifests"
description: "Command line interface for ArDrive"
---

[Arweave Path Manifests][arweave-manifests] are are special `.json` files that instruct Arweave Gateways to map file data associated with specific, unique transaction IDs to customized, hosted paths relative to that of the manifest file itself. So if, for example, your manifest file had an turbo-gateway.com URL like:
[Arweave Path Manifests][arweave-manifests] are are special `.json` files that instruct Arweave Gateways to map file data associated with specific, unique transaction IDs to customized, hosted paths relative to that of the manifest file itself. So if, for example, your manifest file had an arweave.net URL like:

```shell
https://turbo-gateway.com/{manifest tx id}
https://arweave.net/{manifest tx id}
```

Then, all the mapped transactions and paths in the manifest file would be addressable at URLs like:

```shell
https://turbo-gateway.com/{manifest tx id}/foo.txt
https://turbo-gateway.com/{manifest tx id}/bar/baz.png
https://arweave.net/{manifest tx id}/foo.txt
https://arweave.net/{manifest tx id}/bar/baz.png
```

ArDrive supports the creation of these Arweave manifests using any of your PUBLIC folders. The generated manifest paths will be links to each of the file entities within the specified folder. The manifest file entity will be created at the root of the folder.
Expand Down Expand Up @@ -108,10 +108,10 @@ In the return output, the top link will be a link to the deployed web app:

```shell
"links": [
"https://turbo-gateway.com/0MK68J8TqGhaaOpPe713Zn0jdpczMt2NGS2CtRYiuAg",
"https://turbo-gateway.com/0MK68J8TqGhaaOpPe713Zn0jdpczMt2NGS2CtRYiuAg/asset-manifest.json",
"https://turbo-gateway.com/0MK68J8TqGhaaOpPe713Zn0jdpczMt2NGS2CtRYiuAg/favicon.ico",
"https://turbo-gateway.com/0MK68J8TqGhaaOpPe713Zn0jdpczMt2NGS2CtRYiuAg/index.html",
"https://arweave.net/0MK68J8TqGhaaOpPe713Zn0jdpczMt2NGS2CtRYiuAg",
"https://arweave.net/0MK68J8TqGhaaOpPe713Zn0jdpczMt2NGS2CtRYiuAg/asset-manifest.json",
"https://arweave.net/0MK68J8TqGhaaOpPe713Zn0jdpczMt2NGS2CtRYiuAg/favicon.ico",
"https://arweave.net/0MK68J8TqGhaaOpPe713Zn0jdpczMt2NGS2CtRYiuAg/index.html",
# ...
```

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: "Uploading With a Custom Content Type"
description: "Command line interface for ArDrive"
---

Each file uploaded to the Arweave network receives a `"Content-Type"` GraphQL tag that contains the MIME type for the file. The gateway will use this content type to determine how to serve that file's data transaction at the `turbo-gateway.com/{data tx id}` endpoint.
Each file uploaded to the Arweave network receives a `"Content-Type"` GraphQL tag that contains the MIME type for the file. The gateway will use this content type to determine how to serve that file's data transaction at the `arweave.net/{data tx id}` endpoint.

By default, the CLI will attempt to derive this content type from the file extension of the provided file. In most cases, the content type that is derived will be correct and the gateway will properly serve the file.

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
title: "Add the Skill to Your Project"
description: "CLI for deploying apps to the permaweb (Arweave) and updating ArNS"
---

```bash
mkdir -p .claude/skills
curl -o .claude/skills/deploy.md https://raw.githubusercontent.com/ar-io/ar-io-deploy/main/examples/claude-skill/deploy.md
```

Then in Claude Code, say:

- "deploy to ar.io"
- "deploy my app to arweave"
- "set up CI/CD for ar.io deployment"

Claude will build your project, detect the output folder, and run the deploy with the right flags.
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"title": "Claude Code Integration",
"pages": [
"add-the-skill-to-your-project",
"what-the-skill-does"
],
"defaultOpen": false
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
title: "What the Skill Does"
description: "CLI for deploying apps to the permaweb (Arweave) and updating ArNS"
---

1. **Detects your build folder** (`./dist`, `./build`, `./out`)
2. **Checks for credentials** (`DEPLOY_KEY` env var or wallet file)
3. **Installs `@ar.io/deploy`** if not already available
4. **Runs the deployment** with appropriate flags
5. **Reports results** — transaction ID, Arweave URL, ArNS URL

See [`examples/claude-skill/`](./examples/claude-skill/) for the full skill file and customization options.

---
35 changes: 35 additions & 0 deletions content/sdks/(clis)/ario-deploy/(commands)/advanced-usage.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
title: "Advanced Usage"
description: "CLI for deploying apps to the permaweb (Arweave) and updating ArNS"
---

Deploy to an undername (subdomain) — the ArNS authority key is a Solana wallet:

```bash
ario-deploy deploy --use-arns --arns-name my-app --wallet ./wallet.json --arns-wallet ./arns-id.json --undername staging
```

Deploy with a custom TTL:

```bash
ario-deploy deploy --use-arns --arns-name my-app --wallet ./wallet.json --arns-wallet ./arns-id.json --ttl-seconds 7200
```

Update ArNS on devnet (or against a custom RPC):

```bash
ario-deploy deploy --use-arns --arns-name my-app --wallet ./wallet.json --arns-wallet ./arns-id.json --cluster devnet
ario-deploy deploy --use-arns --arns-name my-app --wallet ./wallet.json --arns-wallet ./arns-id.json --rpc-url https://my-rpc.example.com
```

Upload using an Ethereum wallet (file):

```bash
ario-deploy deploy --sig-type ethereum --wallet ./private-key.txt
```

Upload using a Solana wallet (base58 private key):

```bash
ario-deploy deploy --sig-type solana --private-key "\<base58-secret-key\>"
```
36 changes: 36 additions & 0 deletions content/sdks/(clis)/ario-deploy/(commands)/direct-commands.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
title: "Direct Commands"
description: "CLI for deploying apps to the permaweb (Arweave) and updating ArNS"
---

Use flags for faster, scriptable deployments:

```bash
ario-deploy deploy --wallet ./wallet.json

ario-deploy deploy --use-arns --arns-name my-app --wallet ./wallet.json --arns-wallet ./arns-id.json
```

Deploy using private key directly:

```bash
ario-deploy deploy --private-key "$(cat wallet.json)"
```

Deploy using environment variable:

```bash
DEPLOY_KEY=$(base64 -i wallet.json) ario-deploy deploy --deploy-folder ./dist
```

Deploy a specific folder:

```bash
ario-deploy deploy --wallet ./wallet.json --deploy-folder ./build
```

Deploy a single file:

```bash
ario-deploy deploy --wallet ./wallet.json --deploy-file ./path/to/file.txt
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
title: "Interactive Mode (Easiest)"
description: "CLI for deploying apps to the permaweb (Arweave) and updating ArNS"
---

Run the deploy command without arguments to be guided through all deployment options:

```bash
ario-deploy deploy
```

When ArNS details aren't supplied via flags, `deploy` asks whether you want to
update an ArNS name (defaulting to yes) and, if so, prompts for the details. It
will guide you through:

- Whether to update an ArNS name (and which one)
- Wallet method (file, string, or environment variable)
- What to deploy (folder or file)
- Advanced options (optional: undername, TTL, Solana cluster)

Pass `--arns-name` (or `--use-arns`) to skip the ArNS confirmation, or use the
`upload` command for an upload-only run. In a non-interactive environment (CI,
or no TTY) `deploy` does not prompt — supply everything via flags or
`DEPLOY_KEY`.
10 changes: 10 additions & 0 deletions content/sdks/(clis)/ario-deploy/(commands)/meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"title": "Commands",
"pages": [
"interactive-mode-easiest",
"direct-commands",
"upload-deploy-without-arns",
"advanced-usage"
],
"defaultOpen": false
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
title: "Upload/deploy without ArNS"
description: "CLI for deploying apps to the permaweb (Arweave) and updating ArNS"
---

`deploy` uploads without updating ArNS by default. You can also use the `upload` command explicitly for the same Turbo upload, dedupe cache, and payment options as deploy, minus ArNS flags:

```bash
ario-deploy deploy --wallet ./wallet.json --deploy-folder ./dist
ario-deploy upload --wallet ./wallet.json --deploy-folder ./dist
ario-deploy upload --wallet ./wallet.json --deploy-file ./dist/index.html
DEPLOY_KEY=$(base64 -i wallet.json) ario-deploy upload --deploy-folder ./dist
```
13 changes: 13 additions & 0 deletions content/sdks/(clis)/ario-deploy/(github-action)/basic-usage.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
title: "Basic Usage"
description: "CLI for deploying apps to the permaweb (Arweave) and updating ArNS"
---

```yaml
- uses: ar-io/ar-io-deploy@v1
with:
deploy-key: ${{ secrets.DEPLOY_KEY }} # upload key (pays for the upload)
arns-key: ${{ secrets.ARNS_KEY }} # Solana ArNS authority key
arns-name: myapp
deploy-folder: ./dist
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
title: "Disabling Deduplication"
description: "CLI for deploying apps to the permaweb (Arweave) and updating ArNS"
---

By default, the action caches transaction IDs to avoid re-uploading unchanged files. To disable this:

```yaml
- name: Deploy without dedupe
uses: ar-io/ar-io-deploy@v1
with:
deploy-key: ${{ secrets.DEPLOY_KEY }}
deploy-folder: ./dist
no-dedupe: 'true'
```

You can also limit the cache size:

```yaml
- name: Deploy with limited cache
uses: ar-io/ar-io-deploy@v1
with:
deploy-key: ${{ secrets.DEPLOY_KEY }}
deploy-folder: ./dist
dedupe-cache-max-entries: '1000'
```

---
12 changes: 12 additions & 0 deletions content/sdks/(clis)/ario-deploy/(github-action)/meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"title": "GitHub Action",
"pages": [
"basic-usage",
"pr-preview-deployments",
"production-deployment",
"with-on-demand-payment",
"updating-arns-solana",
"disabling-deduplication"
],
"defaultOpen": false
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
title: "PR Preview Deployments"
description: "CLI for deploying apps to the permaweb (Arweave) and updating ArNS"
---

Automatically deploy preview builds for each pull request. The `preview` mode auto-generates an undername from the PR number and posts a comment with the preview URL:

```yaml
name: Deploy PR Preview

on:
pull_request:
types: [opened, synchronize]

jobs:
deploy-preview:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Install dependencies
run: npm ci

- name: Build
run: npm run build

- name: Deploy Preview
uses: ar-io/ar-io-deploy@v1
with:
deploy-key: ${{ secrets.DEPLOY_KEY }}
arns-key: ${{ secrets.ARNS_KEY }}
arns-name: myapp
preview: 'true'
github-token: ${{ secrets.GITHUB_TOKEN }}
deploy-folder: ./dist
```

When `preview` is enabled, the action will:

- Auto-generate an undername like `pr-123` from the PR number
- Post a comment on the PR with the preview URL
- Update the comment on subsequent pushes instead of creating new ones
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
title: "Production Deployment"
description: "CLI for deploying apps to the permaweb (Arweave) and updating ArNS"
---

Deploy to your base ArNS name when pushing to main:

```yaml
name: Deploy to Production

on:
push:
branches: [main]

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Install dependencies
run: npm ci

- name: Build
run: npm run build

- name: Deploy to Permaweb
uses: ar-io/ar-io-deploy@v1
with:
deploy-key: ${{ secrets.DEPLOY_KEY }}
arns-key: ${{ secrets.ARNS_KEY }}
arns-name: myapp
deploy-folder: ./dist
```
Loading
Loading