Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
123 commits
Select commit Hold shift + click to select a range
34577e4
fix: unwrap order wrapper from POST /orders/by_uids response (COW-979)
lgahdl May 28, 2026
f807846
feat: replace deployment shell scripts with TypeScript/Node alternati…
lgahdl May 28, 2026
e906993
feat: modularize ponder config with per-chain files under src/chains/…
lgahdl May 28, 2026
0335980
test: add integration tests for fetchOrderStatusByUids (COW-979)
lgahdl May 28, 2026
97231b9
refactor: address PR review feedback on chain modularization (COW-978)
lgahdl May 28, 2026
ce3b10f
Merge pull request #64 from bleu/luizhatem/cow-979-bug-candidatediscr…
lgahdl May 28, 2026
a0dde97
docs: add bleu-context note to deployment scripts (COW-977)
lgahdl May 28, 2026
5a72928
Merge pull request #66 from bleu/luizhatem/cow-977-replace-shell-scri…
lgahdl May 28, 2026
dc92b48
feat: add GET /api/sync-progress endpoint (COW-985)
lgahdl May 28, 2026
5de8d27
fix: resolve TypeScript strict-mode errors in sync-progress tests (CO…
lgahdl May 29, 2026
dd442fc
feat: consolidate deployment compose into root under --profile deploy…
lgahdl May 29, 2026
e5b15d5
fix: update deploy.yml to use deploy-remotely.ts (COW-980) (#69)
lgahdl May 29, 2026
c8dd4b4
feat: add Docker image publish workflow to ghcr.io (COW-981) (#70)
lgahdl May 29, 2026
42dac5f
docs: add operational guide to README for non-Ponder operators (COW-9…
lgahdl May 29, 2026
7b91797
fix: derive active chain descriptions from CHAIN_NAMES (COW-982) (#71)
lgahdl May 29, 2026
ae1a750
docs: document /ready /status /metrics and Kubernetes probes (COW-983…
lgahdl May 29, 2026
62d40c6
feat: add chain stubs for all 12 cow-sdk SupportedChainId entries (CO…
lgahdl May 29, 2026
8227547
docs: document GET /api/sync-progress endpoint (COW-985)
lgahdl May 29, 2026
5e4fdf6
Merge remote-tracking branch 'origin/luizhatem/cow-978-modularize-pon…
lgahdl May 29, 2026
02b97e1
docs: fix stale references and remove duplicated content (COW-987)
lgahdl May 29, 2026
b40791a
feat: research and update contract deployment info for all 12 chains …
lgahdl May 29, 2026
72ac1a0
refactor: remove contractPollerInterval from ChainConfig, rename orde…
lgahdl May 29, 2026
6782071
chore: fill in verified ComposableCow startBlock for all chains (COW-…
lgahdl May 29, 2026
9392acc
Merge branch 'luizhatem/cow-986-support-all-cow-protocol-chain-ids-bn…
lgahdl May 29, 2026
46a8f85
chore: fill in verified aaveV3AdapterFactory, flashLoanRouter and gpv…
lgahdl May 29, 2026
0ad999f
chore: fill in verified aaveV3AdapterFactory, flashLoanRouter and gpv…
lgahdl May 29, 2026
a26106b
feat: modularize ponder config with per-chain src/chains/ (COW-978)
lgahdl May 29, 2026
d534915
feat: add GET /api/sync-progress endpoint (COW-985)
lgahdl May 29, 2026
57e68ba
docs: fix stale references and remove duplicated content (COW-987)
lgahdl May 29, 2026
7b08af5
chore: update ACTIVE_CHAINS comments — all addresses verified, blocke…
lgahdl May 29, 2026
b24ab1a
chore: clarify ACTIVE_CHAINS comments — null fields are not runtime b…
lgahdl May 29, 2026
2737eab
test: add pnpm test to CI and expand test coverage (COW-995)
lgahdl Jun 1, 2026
07478fc
fix: minor cleanups from grant review (COW-996, COW-999, COW-1003)
lgahdl Jun 1, 2026
e83977c
fix: schema hygiene and SQL parameterization (COW-997, COW-998)
lgahdl Jun 1, 2026
294fc9d
feat: expose generator hash in REST /api/orders/by-owner response (CO…
lgahdl Jun 1, 2026
f46e344
refactor: rename block handlers to semantic namespaced names (COW-1000)
lgahdl Jun 1, 2026
fc8a76b
fix: wrap settlement.ts RPC calls in withTimeout, remove decode dead …
lgahdl Jun 1, 2026
590cc48
docs: fix ops gaps and architecture.md accuracy (COW-1001 + COW-1002)
lgahdl Jun 1, 2026
e140516
fix: preflight /by_uids before cascade-cancelled insert in CandidateC…
lgahdl Jun 1, 2026
226208b
feat: structured JSON logging + K8s probe docs (COW-994)
lgahdl Jun 1, 2026
7457642
fix: account fallback for TWAP parts aged out of /by_uids (COW-989)
lgahdl Jun 1, 2026
8804df3
test: add GeneratorSummary schema tests including hash field (COW-993)
lgahdl Jun 1, 2026
be1b767
test: add fetchOwnerOrderStatuses unit tests (COW-989)
lgahdl Jun 1, 2026
d2ed6d8
fix: remove composableCow. prefix from block interval names (Ponder d…
lgahdl Jun 1, 2026
8b9cee2
fix: rename progressPct to historicalSyncProgressPct in sync-progress…
lgahdl Jun 2, 2026
b7d8838
fix: remove decode-only-for-logging block from settlement.ts cowLog (…
lgahdl Jun 2, 2026
4594e5f
fix: correct hash field describe() to use tuple abi.encode notation (…
lgahdl Jun 2, 2026
8992efc
fix: use tighter 5s timeout for inner-loop RPC calls in settlement ha…
lgahdl Jun 2, 2026
b732822
fix: update docs/api-reference.md to use historicalSyncProgressPct fi…
lgahdl Jun 2, 2026
810949e
fix: update stale C1/C5 name references in constants.ts and docs (COW…
lgahdl Jun 2, 2026
3cb8f76
fix: update stale C1/C5 name references in docs (COW-1001+COW-1002)
lgahdl Jun 2, 2026
e2c474b
fix: fix preflight timeout, migrate console.log to cowLog, deduplicat…
lgahdl Jun 2, 2026
414ae6f
fix: route warn/error to stderr in cowLog, add initialDelaySeconds to…
lgahdl Jun 2, 2026
e2ba179
fix: add maxPages guard to fetchOwnerOrderStatuses, document aged-out…
lgahdl Jun 2, 2026
d3b5036
test: fix generator mock hash field, remove duplicate makeChain, add …
lgahdl Jun 2, 2026
8645868
fix: update stale C1/C5 names in comments, verify CirclesBackingOrder…
lgahdl Jun 2, 2026
bb80e89
fix: add non-null assertion on orders[0] in test to fix TS2532
lgahdl Jun 3, 2026
a418d7b
fix: improve hash field description accuracy — reference ComposableCo…
lgahdl Jun 4, 2026
ff2338b
fix: replace stale C1-C4 block handler references with semantic names…
lgahdl Jun 4, 2026
f41b45d
fix: wrap handler names in inline code in deployment.md flags table
lgahdl Jun 4, 2026
de4af8e
docs: add sync-progress endpoint to API list and "checking if caught …
lgahdl Jun 4, 2026
844e815
fix: add comments explaining preflight timeout fallback and onConflic…
lgahdl Jun 4, 2026
6e140fd
fix: reduce cowLogger JSDoc to single-line comment per project conven…
lgahdl Jun 4, 2026
86e5251
fix: use BOOTSTRAP_OWNER_FETCH_TIMEOUT_MS for paginated account fallb…
lgahdl Jun 4, 2026
37ddc2c
fix: replace sql.join with Drizzle inArray in getCachedUidStatuses
lgahdl Jun 4, 2026
76a8ff4
fix: revert to sql.join for getCachedUidStatuses — drizzle-orm/pg-cor…
lgahdl Jun 4, 2026
62c9dba
fix: use Drizzle query builder with inArray for getCachedUidStatuses;…
lgahdl Jun 4, 2026
06c8d30
refactor: convert cacheUidStatuses INSERT to Drizzle query builder
lgahdl Jun 4, 2026
e4708b2
refactor: replace raw sql IS NULL and GROUP BY with Drizzle operators
lgahdl Jun 4, 2026
64382af
refactor(tests): address review comments on PR #79
lgahdl Jun 4, 2026
c4fd3b1
refactor(tests): use DiscreteOrderStatusQuery.enum constants in test …
lgahdl Jun 4, 2026
22ca1eb
Merge origin/develop into cow-995 — keep ponder:api vitest alias
lgahdl Jun 4, 2026
6f73a13
fix: export makeSelectChain from mock to fix __makeSelectChain typech…
lgahdl Jun 4, 2026
b4645a0
Merge pull request #79 from bleu/luizhatem/cow-995-tests-add-pnpm-tes…
lgahdl Jun 4, 2026
bc002a1
refactor: rename orderUidCacheTable → orderUidCache (drop redundant T…
lgahdl Jun 4, 2026
c4b9638
Merge remote-tracking branch 'origin/develop' into luizhatem/cow-997-…
lgahdl Jun 4, 2026
e10387f
test: update execution-summary test for db.select + count() migration
lgahdl Jun 4, 2026
1b2125b
Merge pull request #81 from bleu/luizhatem/cow-997-998-schema-and-sql…
lgahdl Jun 4, 2026
4834738
docs: note ConditionalOrderRemoved in newer ComposableCoW contract (C…
lgahdl Jun 4, 2026
04181ad
refactor: replace isDeterministicOrderType with Record<OrderType, boo…
lgahdl Jun 4, 2026
9281016
test: trim orders-by-owner schema tests to regression-only guards
lgahdl Jun 4, 2026
47e135c
style: remove unnecessary quotes from block handler keys in ponder.co…
lgahdl Jun 4, 2026
79164f6
chore: merge develop into PR #83, resolve ponder.config.ts conflict
lgahdl Jun 4, 2026
1a5b7cf
refactor: move settlement RPC work to SettlementResolver block handle…
lgahdl Jun 4, 2026
e5ae045
Merge remote-tracking branch 'origin/develop' into luizhatem/cow-991-…
lgahdl Jun 4, 2026
0cd52b3
chore: merge develop into PR #84, adapt SettlementResolver to settlem…
lgahdl Jun 4, 2026
35b8cb9
fix: address PR #85 review comments (COW-1001 + COW-1002)
lgahdl Jun 4, 2026
a8313ed
docs: correct QuickNode eth_getLogs block range limits
lgahdl Jun 4, 2026
dee1b2e
docs: remove provider limits table from deployment.md
lgahdl Jun 4, 2026
2ca6af0
Merge origin/develop — resolve conflicts preserving ethGetLogsBlockRa…
lgahdl Jun 4, 2026
7419a07
fix: derive DiscreteStatus from schema enum, remove cowLogger scope c…
lgahdl Jun 4, 2026
2c965c8
Merge origin/develop — keep discreteOrderStatusEnum import, add isNul…
lgahdl Jun 4, 2026
d873a86
fix: rename cowLog->log/logger.ts, use /health for liveness, clarify …
lgahdl Jun 5, 2026
5469030
Merge origin/develop — keep K8s probes + structured logging, rename P…
lgahdl Jun 5, 2026
9e9cac2
fix: rename historicalSyncProgressPct -> historicalBlocksFetchedPct
lgahdl Jun 5, 2026
d170347
Merge remote-tracking branch 'origin/develop' into luizhatem/fix-prog…
lgahdl Jun 5, 2026
297ca0d
Merge origin/develop — resolve add/add conflict in orders-by-owner tests
lgahdl Jun 5, 2026
ad168c6
fix: minor cleanups from grant review (COW-996, COW-999, COW-1003)
lgahdl Jun 8, 2026
3d100ee
feat: expose generator hash in REST /api/orders/by-owner response (CO…
lgahdl Jun 8, 2026
854d4da
Merge origin/develop — resolve blockHandler.ts import conflict
lgahdl Jun 8, 2026
9b7a458
fix: preflight /by_uids before cascade-cancelled insert in CandidateC…
lgahdl Jun 8, 2026
843c83c
feat: migrate all src/application/ log calls to structured logger (CO…
lgahdl Jun 8, 2026
e772e3f
docs: rename block handlers in architecture.md, document flash loan p…
lgahdl Jun 8, 2026
1fd8981
Merge origin/develop — resolve conflicts in architecture.md and block…
lgahdl Jun 8, 2026
960c863
docs: remove specific K8s probe timing values from deployment.md (COW…
lgahdl Jun 8, 2026
ccff2de
chore: merge origin/develop into pr87 logger-migration branch
lgahdl Jun 8, 2026
ff70ed8
docs: add flash loan adapter lifecycle to architecture.md (COW-991)
lgahdl Jun 8, 2026
bb2df41
docs: remove chain-specific block numbers from architecture.md (COW-1…
lgahdl Jun 8, 2026
bce4ea1
docs: replace "generic" with "order-type-agnostic" for block handlers…
lgahdl Jun 8, 2026
152ab57
Merge pull request #87 from bleu/luizhatem/cow-994-f19-k8s-probes-and…
lgahdl Jun 8, 2026
3b4f216
Merge pull request #90 from bleu/luizhatem/fix-progresspct-rename-his…
lgahdl Jun 8, 2026
c3bdd38
merge: resolve conflict with develop — keep semantic handler names in…
lgahdl Jun 8, 2026
20febdf
Merge pull request #85 from bleu/luizhatem/cow-1001-cow-1002-docs-ops…
lgahdl Jun 8, 2026
2157e4a
docs: minor whitespace fix in architecture.md
lgahdl Jun 8, 2026
dcea010
merge: resolve conflicts with develop — combine log() structured logg…
lgahdl Jun 8, 2026
ac0f056
fix: align ponder.on registrations with renamed block handlers in pon…
lgahdl Jun 8, 2026
2f2ccb7
docs: remove PostgreSQL memory flags, production architecture, and Wh…
lgahdl Jun 9, 2026
74802d2
refactor: rename block handlers to semantic namespaced names (COW-1000)
lgahdl Jun 9, 2026
f525626
fix: log warning when account fallback fails in CandidateConfirmer st…
lgahdl Jun 9, 2026
38e7959
merge: resolve conflicts with develop — keep TWAP fallback docs + ded…
lgahdl Jun 9, 2026
78a0f9a
fix: account fallback for TWAP parts aged out of /by_uids (COW-989)
lgahdl Jun 9, 2026
0fff80e
merge: resolve conflicts with develop — queue-based settlement, logge…
lgahdl Jun 9, 2026
eb11226
fix: wrap settlement.ts RPC calls in withTimeout, queue-based Settlem…
lgahdl Jun 9, 2026
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
27 changes: 18 additions & 9 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,28 @@ DATABASE_URL=postgresql://postgres:postgres@localhost:5432/programmatic-orders
# Schema for this app (required when using Postgres; avoids "previously used by a different Ponder app")
DATABASE_SCHEMA=programmatic_orders

# Dev/local: reduce RPC usage during sync
# DISABLE_POLL_RESULT_CHECK=true — skip C1 ContractPoller multicalls for non-deterministic generators
# DISABLE_DETERMINISTIC_CANCEL_SWEEP=true — skip C5 singleOrders checks for deterministic generators
# DISABLE_SETTLEMENT_FACTORY_CHECK=true — skip getCode + FACTORY() calls in the GPv2Settlement:Trade
# handler entirely. Use to benchmark base sync throughput vs. the cost of those RPC calls.

# C1 ContractPoller per-block generator cap (optional; default: 200)
# Hard ceiling on how many generators the block handler multicalls per block.
# Overflow defers to the next block, prioritized by oldest lastCheckBlock.
# Performance / escape-hatch flags (all optional; safe to omit in production)
# DISABLE_POLL_RESULT_CHECK=true # escape-hatch: skips OrderDiscoveryPoller multicalls for
# # non-deterministic generators; leaves those orders undetected
# # until re-enabled. Use only to benchmark or diagnose.
# DISABLE_DETERMINISTIC_CANCEL_SWEEP=true # escape-hatch: skips CancellationWatcher singleOrders()
# # reads; on-chain remove() on TWAP/StopLoss/CirclesBackingOrder
# # generators will not be detected while disabled.
# DISABLE_SETTLEMENT_FACTORY_CHECK=true # escape-hatch: skips getCode + FACTORY() RPC calls in the
# # GPv2Settlement handler. Benchmark-only; do not use in prod.

# Per-block generator cap for OrderDiscoveryPoller + CancellationWatcher (optional; default: 200)
# Hard ceiling per block per chain. Excess generators defer to the next block (oldest-first).
# Override per chain with the numeric chain-id suffix:
# MAX_GENERATORS_PER_BLOCK_1=200 # mainnet
# MAX_GENERATORS_PER_BLOCK_100=400 # gnosis (shorter block time → higher budget)

# eth_getLogs block range cap (optional; default: 1000)
# Increase if your RPC provider supports a larger range to speed up backfill.
# Override per chain with the numeric chain-id suffix:
# ETH_GET_LOGS_BLOCK_RANGE_1=2000 # mainnet
# ETH_GET_LOGS_BLOCK_RANGE_100=5000 # gnosis


# Logging (optional)
# PINO_LOG_LEVEL=info
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,6 @@ jobs:
env:
# Public RPC
MAINNET_RPC_URL: https://eth.api.pocket.network

- name: Test
run: pnpm test
18 changes: 13 additions & 5 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,18 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4

- uses: pnpm/action-setup@v4
with:
version: 10

- uses: actions/setup-node@v4
with:
node-version: 20
cache: pnpm

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Set up SSH key
run: |
mkdir -p ~/.ssh
Expand All @@ -45,8 +57,4 @@ jobs:
echo "${{ secrets.DEPLOY_ENV_FILE_CONTENT }}" > .env

- name: Run deploy script
run: |
cd deployment
bash deploy-remotely.sh \
cow-deploy:${{ secrets.DEPLOY_PATH }} \
../.env
run: npx tsx deployment/deploy-remotely.ts cow-deploy:${{ secrets.DEPLOY_PATH }} ../.env
50 changes: 50 additions & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Publish Docker image

on:
push:
branches: [main]
workflow_dispatch:

jobs:
build-and-push:
name: Build and push to ghcr.io
runs-on: ubuntu-latest
permissions:
contents: read
packages: write

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}
tags: |
type=sha,format=long
type=ref,event=branch
type=raw,value=latest,enable={{is_default_branch}}

- name: Build and push image
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
build-args: |
PIPELINE_BUILD_TAG=${{ github.sha }}
19 changes: 19 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,25 @@ pnpm dev

The GraphQL API is at `http://localhost:42069` once the dev server starts.

> **First run takes time.** The indexer must backfill all on-chain events from the contract's deploy block before it goes live. This can take several hours depending on your RPC endpoint. The API is queryable the whole time — data just fills in progressively.

## Is it working?

Use these endpoints to check indexer health without reading logs:

| Endpoint | What to expect |
|----------|----------------|
| `GET /healthz` | `200 {"status":"ok"}` — process is alive |
| `GET /ready` | `503` while backfilling, `200` once caught up |
| `GET /status` | Per-chain block progress (current vs. latest) |
| `GET /metrics` | Prometheus metrics (block lag, handler latency) |

**Normal during backfill** — `/ready` returns `503` and `/status` shows `checkpoint` far behind `latest`. The indexer is working; it just hasn't caught up yet. Expect this for several hours on first run.

**Stuck vs. slow** — if `/status` shows the same `checkpoint` block for more than 5 minutes _after_ backfill (i.e., once `/ready` returned `200`), the indexer may be stuck. Check `docker logs <container>` for errors.

**Container crashed** — `/healthz` returns a connection error. Restart the container and check logs.

## Commands

| Command | What it does |
Expand Down
53 changes: 0 additions & 53 deletions deployment/deploy-remotely.sh

This file was deleted.

128 changes: 128 additions & 0 deletions deployment/deploy-remotely.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
#!/usr/bin/env tsx
/**
* deploy-remotely.ts — rsync + SSH deploy or local deploy.
* Replaces deploy-remotely.sh.
*
* NOTE: This script is specific to Bleu's internal deployment workflow.
* It assumes a particular server layout and SSH setup. Adapt as needed for
* your own hosting environment.
*
* Usage:
* npx tsx deployment/deploy-remotely.ts <deploy_target> [env_file_path]
*
* deploy_target:
* - Local deployment (runs manage.ts in this repo)
* host:path Remote deployment via SSH (rsync + scp + ssh)
*
* Note: Remote deployment requires Node 18+ and pnpm installed on the remote host.
* Run `pnpm install` on the remote after the first deploy to install tsx.
*/

import { spawnSync } from "node:child_process";
import { resolve } from "node:path";

function run(
cmd: string,
args: string[],
opts: { cwd?: string; ignoreError?: boolean } = {}
): void {
console.log(`+ ${cmd} ${args.join(" ")}`);
const result = spawnSync(cmd, args, {
stdio: "inherit",
cwd: opts.cwd,
});
if (!opts.ignoreError && result.status !== 0) {
process.exit(result.status ?? 1);
}
}

function runCapture(cmd: string, args: string[]): string {
const result = spawnSync(cmd, args, { encoding: "utf-8" });
if (result.status !== 0) {
console.error(`Command failed: ${cmd} ${args.join(" ")}`);
console.error(result.stderr);
process.exit(result.status ?? 1);
}
return result.stdout.trim();
}

function usage(): never {
console.error(
`Usage: tsx deployment/deploy-remotely.ts <deploy_target> [env_file_path]

deploy_target:
- Local deployment
host:path Remote deployment via SSH

env_file_path: path to .env file (default: .env)
`
);
process.exit(1);
}

const [deployTarget, envFilePath = ".env"] = process.argv.slice(2);

if (!deployTarget) {
usage();
}

const appRevision = runCapture("git", ["rev-parse", "--short", "HEAD"]);
const repoRootDir = runCapture("git", ["rev-parse", "--show-toplevel"]);
const manageCmd = process.env["MANAGE_CMD_OVERRIDE"] ?? "up";

if (deployTarget === "-") {
// Local deployment
const absoluteEnvFile = resolve(envFilePath);
run(
"npx",
[
"tsx",
"deployment/manage.ts",
manageCmd,
"--env-file",
absoluteEnvFile,
"--revision",
appRevision,
],
{ cwd: repoRootDir }
);
} else if (/^[^:]+:.+/.test(deployTarget)) {
// Remote deployment via SSH
const colonIdx = deployTarget.indexOf(":");
const sshHost = deployTarget.slice(0, colonIdx);
const remotePath = deployTarget.slice(colonIdx + 1);

// rsync repo to remote host
run("rsync", [
"-avz",
"--delete",
"--mkpath",
"--exclude=.git",
"--exclude=node_modules",
"--exclude=.env",
"--exclude=.env.local",
"--exclude=.vite",
"--exclude=*.log",
"--exclude=tmp/",
`${repoRootDir}/`,
`${sshHost}:${remotePath}/`,
]);

// Copy env file to remote deployment directory
const remoteEnvPath = `${remotePath}/deployment/.env`;
run("scp", [envFilePath, `${sshHost}:${remoteEnvPath}`]);

// Run manage.ts on the remote host
// Note: The remote host must have Node 18+ and pnpm installed.
// After the first deploy, run `pnpm install` on the remote to install tsx.
const remoteDeployDir = `${remotePath}/deployment`;
run("ssh", [
sshHost,
`cd ${remoteDeployDir} && npx tsx manage.ts ${manageCmd} --env-file .env --revision ${appRevision}`,
]);
} else {
console.error(
"Error: <deploy_target> must be '-' (local) or SSH_HOST:PATH (remote)"
);
usage();
}
52 changes: 0 additions & 52 deletions deployment/docker-compose.yml

This file was deleted.

Loading
Loading