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
8 changes: 4 additions & 4 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ REDIS_URL=redis://redis:6379 # REQUIRED for the self-host review
# Every service below gets a beginner-friendly default `deploy.resources.limits.memory` cap so one runaway
# optional profile (e.g. Ollama loading a multi-GB model) can't OOM-kill or starve the core review pipeline.
# Override any of these for a bigger/smaller host; values use Docker's byte-size shorthand (e.g. 512m, 4g).
# GITTENSORY_MEM_LIMIT=2g # core app (always runs)
# LOOPOVER_MEM_LIMIT=2g # core app (always runs)
# REDIS_MEM_LIMIT=512m # core app (always runs)
# POSTGRES_MEM_LIMIT=2g # --profile postgres / --profile pgbouncer
# QDRANT_MEM_LIMIT=2g # --profile qdrant
Expand Down Expand Up @@ -507,15 +507,15 @@ REDIS_URL=redis://redis:6379 # REQUIRED for the self-host review
# • "Claude usage (OTEL)" — cost/tokens/model/effort from the review CLI's OpenTelemetry export (see below).
# • "Resource hub" — links to every integrated service.
# GRAFANA_REPORTING_EXPORT_INTERVAL_SECONDS=30 # refresh cadence for the redacted reporting SQLite export
# GITTENSORY_REPORTING_SOURCE_DB=/appdb/gittensory.sqlite # if DATABASE_PATH=/data/custom.sqlite, set /appdb/custom.sqlite
# LOOPOVER_REPORTING_SOURCE_DB=/appdb/loopover.sqlite # if DATABASE_PATH=/data/custom.sqlite, set /appdb/custom.sqlite
#
# AMS (gittensory-miner) ledger dashboards — only useful when a miner ALSO runs on this same host (see
# packages/gittensory-miner/docs/observability.md). Requires --profile ams-observability, separate from the
# general observability profile above: an engine-only deployment has nothing for this exporter to read.
# Grafana never mounts the live ledgers directly — this exporter reads them read-only and writes a redacted
# snapshot (free-form attempt_log_events.reason/.payload_json dropped) into the same reporting volume.
# GITTENSORY_MINER_CONFIG_DIR=~/.config/gittensory-miner # host dir the exporter mounts read-only at /ams-ledgers
# GITTENSORY_AMS_REPORTING_EXPORT_INTERVAL_SECONDS=30 # refresh cadence for the redacted AMS ledger exports
# LOOPOVER_MINER_CONFIG_DIR=~/.config/gittensory-miner # host dir the exporter mounts read-only at /ams-ledgers
# LOOPOVER_AMS_REPORTING_EXPORT_INTERVAL_SECONDS=30 # refresh cadence for the redacted AMS ledger exports
#
# Claude usage telemetry → OTEL collector → Prometheus → the Claude usage dashboard. OFF by default.
# CLAUDE_CODE_ENABLE_TELEMETRY=1 # enable; needs --profile observability (starts the otel-collector)
Expand Down
40 changes: 20 additions & 20 deletions .gittensory-miner.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -30,31 +30,31 @@ GITHUB_TOKEN=ghp_your_token_here
# =============================================================================
# 3. Optional overrides — defaults are fine for a single-machine install
# =============================================================================
# By default all local state lives under GITTENSORY_MINER_CONFIG_DIR (else $XDG_CONFIG_HOME, else
# By default all local state lives under LOOPOVER_MINER_CONFIG_DIR (else $XDG_CONFIG_HOME, else
# ~/.config), in a gittensory-miner/ subdirectory. Set the base dir, or any individual store path,
# only to relocate state (e.g. onto a dedicated volume).
# GITTENSORY_MINER_CONFIG_DIR=/var/lib/gittensory-miner
# LOOPOVER_MINER_CONFIG_DIR=/var/lib/gittensory-miner

# Repo clones and git worktrees created during attempts:
# GITTENSORY_MINER_REPO_CLONE_DIR=/var/lib/gittensory-miner/clones
# GITTENSORY_MINER_WORKTREE_DIR=/var/lib/gittensory-miner/worktrees
# LOOPOVER_MINER_REPO_CLONE_DIR=/var/lib/gittensory-miner/clones
# LOOPOVER_MINER_WORKTREE_DIR=/var/lib/gittensory-miner/worktrees

# Per-store SQLite file overrides (each defaults to a file under the config dir above):
# GITTENSORY_MINER_CLAIM_LEDGER_DB=
# GITTENSORY_MINER_PORTFOLIO_QUEUE_DB=
# GITTENSORY_MINER_EVENT_LEDGER_DB=
# GITTENSORY_MINER_RUN_STATE_DB=
# GITTENSORY_MINER_PLAN_STORE_DB=
# GITTENSORY_MINER_PREDICTION_LEDGER_DB=
# GITTENSORY_MINER_GOVERNOR_LEDGER_DB=
# GITTENSORY_MINER_GOVERNOR_STATE_DB=
# GITTENSORY_MINER_ATTEMPT_LOG_DB=
# GITTENSORY_MINER_ORB_EXPORT_DB=
# GITTENSORY_MINER_REPLAY_SNAPSHOT_DB=
# GITTENSORY_MINER_WORKTREE_ALLOCATOR_DB=
# GITTENSORY_MINER_DENY_HOOK_SYNTHESIS_DB=
# LOOPOVER_MINER_CLAIM_LEDGER_DB=
# LOOPOVER_MINER_PORTFOLIO_QUEUE_DB=
# LOOPOVER_MINER_EVENT_LEDGER_DB=
# LOOPOVER_MINER_RUN_STATE_DB=
# LOOPOVER_MINER_PLAN_STORE_DB=
# LOOPOVER_MINER_PREDICTION_LEDGER_DB=
# LOOPOVER_MINER_GOVERNOR_LEDGER_DB=
# LOOPOVER_MINER_GOVERNOR_STATE_DB=
# LOOPOVER_MINER_ATTEMPT_LOG_DB=
# LOOPOVER_MINER_ORB_EXPORT_DB=
# LOOPOVER_MINER_REPLAY_SNAPSHOT_DB=
# LOOPOVER_MINER_WORKTREE_ALLOCATOR_DB=
# LOOPOVER_MINER_DENY_HOOK_SYNTHESIS_DB=

# Misc:
# GITTENSORY_MINER_AMS_POLICY_PATH= # path to an AMS policy file
# GITTENSORY_MINER_NO_UPDATE_CHECK=1 # disable the startup npm-registry version nudge
# GITTENSORY_MINER_VERSION= # override the reported version (testing only)
# LOOPOVER_MINER_AMS_POLICY_PATH= # path to an AMS policy file
# LOOPOVER_MINER_NO_UPDATE_CHECK=1 # disable the startup npm-registry version nudge
# LOOPOVER_MINER_VERSION= # override the reported version (testing only)
4 changes: 2 additions & 2 deletions .gittensory-miner.yml.example
Original file line number Diff line number Diff line change
Expand Up @@ -69,14 +69,14 @@ selfPlagiarism:
# Per-repo kill-switch (#2341) consulted by the Governor chokepoint before every write action. Distinct from
# minerEnabled: pausing halts an already-in-flight queue without deregistering the repo from discovery, and
# un-pausing resumes exactly where the queue left off. A separate GLOBAL kill-switch (env var
# GITTENSORY_MINER_KILL_SWITCH) halts every repo at once and always wins over this per-repo flag.
# LOOPOVER_MINER_KILL_SWITCH) halts every repo at once and always wins over this per-repo flag.
# `paused` (boolean, default: false).
killSwitch:
paused: false

# Per-repo dry-run/live execution opt-in (#2342). A freshly-configured miner always defaults to dry-run; this
# field alone is NOT sufficient to go live -- the miner's own operator must also separately opt in globally
# (env var GITTENSORY_MINER_LIVE_MODE=live). `liveModeOptIn` must equal EXACTLY the string "live" (not a
# (env var LOOPOVER_MINER_LIVE_MODE=live). `liveModeOptIn` must equal EXACTLY the string "live" (not a
# boolean, not "yes"/"on") -- any other value stays dry-run. Default: null.
execution:
liveModeOptIn: null
2 changes: 1 addition & 1 deletion apps/gittensory-miner-extension/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ quota, instead of silently failing to save or leaving storage partially written.
`npm test` runs with `--coverage` enabled (v8 provider) and enforces `vitest.config.ts`'s
`coverage.thresholds` — a measured baseline (#4865), not an aspirational target. The suite imports
`background.js`, `opportunity-badge.js`, and `toolbar-badge.js` directly (via the existing
`__GITTENSORY_MINER_EXTENSION_TEST__` hook) so v8 can attribute coverage; the root `test/unit/miner-*.test.ts`
`__LOOPOVER_MINER_EXTENSION_TEST__` hook) so v8 can attribute coverage; the root `test/unit/miner-*.test.ts`
files remain as broader behavior tests through the `node:vm` harness.

`content.js` and `options.js` are deliberately deferred — they need a jsdom mount harness before
Expand Down
2 changes: 1 addition & 1 deletion apps/gittensory-miner-extension/background.js
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ if (chrome.action && chrome.storage.onChanged) {
});
}

if (globalThis.__GITTENSORY_MINER_EXTENSION_TEST__) {
if (globalThis.__LOOPOVER_MINER_EXTENSION_TEST__) {
globalThis.__gittensoryMinerBackgroundInternals = {
PING_MESSAGE,
ISSUE_CONTEXT_MESSAGE,
Expand Down
2 changes: 1 addition & 1 deletion apps/gittensory-miner-extension/content.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ function renderOpportunityBadge(container, payload, nowMs = Date.now()) {
container.innerHTML = markup;
}

if (globalThis.__GITTENSORY_MINER_EXTENSION_TEST__) {
if (globalThis.__LOOPOVER_MINER_EXTENSION_TEST__) {
globalThis.__gittensoryMinerContentInternals = {
matchGitHubIssueTarget,
findIssueSidebar,
Expand Down
2 changes: 1 addition & 1 deletion apps/gittensory-miner-extension/opportunity-badge.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,6 @@ const opportunityBadgeApi = {

globalThis.__gittensoryMinerOpportunityBadge = opportunityBadgeApi;

if (globalThis.__GITTENSORY_MINER_EXTENSION_TEST__) {
if (globalThis.__LOOPOVER_MINER_EXTENSION_TEST__) {
globalThis.__gittensoryMinerOpportunityBadgeTestExports = opportunityBadgeApi;
}
2 changes: 1 addition & 1 deletion apps/gittensory-miner-extension/options.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ function normalizeMinerUiUrl(text) {
return trimmed || DEFAULT_MINER_UI_URL;
}

if (globalThis.__GITTENSORY_MINER_EXTENSION_TEST__) {
if (globalThis.__LOOPOVER_MINER_EXTENSION_TEST__) {
globalThis.__gittensoryMinerOptionsInternals = {
parseWatchedRepos,
parseRankedCandidatesJson,
Expand Down
2 changes: 1 addition & 1 deletion apps/gittensory-miner-extension/test/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ export async function loadExtensionModules(options: ChromeMockOptions = {}) {

const harness = buildChromeMock(options);
vi.stubGlobal("chrome", harness.chrome);
vi.stubGlobal("__GITTENSORY_MINER_EXTENSION_TEST__", true);
vi.stubGlobal("__LOOPOVER_MINER_EXTENSION_TEST__", true);
if (options.fetchImpl) vi.stubGlobal("fetch", options.fetchImpl);

await import("../opportunity-badge.js");
Expand Down
26 changes: 13 additions & 13 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,8 @@ services:
# additive, zero effect on an operator who has never touched secrets/.
GITHUB_APP_PRIVATE_KEY_FILE: "${GITHUB_APP_PRIVATE_KEY_FILE:-/run/secrets/github_app_private_key}"
GITHUB_WEBHOOK_SECRET_FILE: "${GITHUB_WEBHOOK_SECRET_FILE:-/run/secrets/github_webhook_secret}"
GITTENSORY_API_TOKEN_FILE: "${GITTENSORY_API_TOKEN_FILE:-/run/secrets/loopover_api_token}"
GITTENSORY_MCP_TOKEN_FILE: "${GITTENSORY_MCP_TOKEN_FILE:-/run/secrets/loopover_mcp_token}"
LOOPOVER_API_TOKEN_FILE: "${LOOPOVER_API_TOKEN_FILE:-/run/secrets/loopover_api_token}"
LOOPOVER_MCP_TOKEN_FILE: "${LOOPOVER_MCP_TOKEN_FILE:-/run/secrets/loopover_mcp_token}"
INTERNAL_JOB_TOKEN_FILE: "${INTERNAL_JOB_TOKEN_FILE:-/run/secrets/internal_job_token}"
SELFHOST_SETUP_TOKEN_FILE: "${SELFHOST_SETUP_TOKEN_FILE:-/run/secrets/selfhost_setup_token}"
TOKEN_ENCRYPTION_SECRET_FILE: "${TOKEN_ENCRYPTION_SECRET_FILE:-/run/secrets/token_encryption_secret}"
Expand Down Expand Up @@ -210,7 +210,7 @@ services:
deploy:
resources:
limits:
memory: "${GITTENSORY_MEM_LIMIT:-2g}"
memory: "${LOOPOVER_MEM_LIMIT:-2g}"
healthcheck:
# Probe /ready (not /health): /health is a liveness stub that is 200 even when the DB is down,
# whereas /ready returns 503 until the DB answers AND migrations are applied — so dependents that
Expand Down Expand Up @@ -807,11 +807,11 @@ services:
# If you override DATABASE_PATH, set this to the matching /appdb/<file> path. When DATABASE_URL points at
# Postgres, the exporter reads Postgres with psql and still writes the same redacted SQLite reporting DB
# for Grafana. Set GITTENSORY_REPORTING_SOURCE_DATABASE_URL only if the reporting reader uses a different URL.
GITTENSORY_REPORTING_SOURCE_DB: "${GITTENSORY_REPORTING_SOURCE_DB:-/appdb/loopover.sqlite}"
LOOPOVER_REPORTING_SOURCE_DB: "${LOOPOVER_REPORTING_SOURCE_DB:-/appdb/loopover.sqlite}"
GITTENSORY_REPORTING_SOURCE_DATABASE_URL: "${GITTENSORY_REPORTING_SOURCE_DATABASE_URL:-}"
DATABASE_URL: "${DATABASE_URL:-}"
GITTENSORY_REPORTING_DIR: /reporting
GITTENSORY_REPORTING_DB: "${GITTENSORY_REPORTING_DB:-/reporting/loopover-reporting.sqlite}"
LOOPOVER_REPORTING_DIR: /reporting
LOOPOVER_REPORTING_DB: "${LOOPOVER_REPORTING_DB:-/reporting/loopover-reporting.sqlite}"
GRAFANA_REPORTING_EXPORT_INTERVAL_SECONDS: "${GRAFANA_REPORTING_EXPORT_INTERVAL_SECONDS:-30}"
command:
- /bin/sh
Expand All @@ -828,7 +828,7 @@ services:
test:
[
"CMD-SHELL",
"db=\"$${GITTENSORY_REPORTING_DB:-/reporting/loopover-reporting.sqlite}\"; test -s \"$$db\" && sqlite3 \"$$db\" 'PRAGMA quick_check;' | grep -q '^ok$'",
"db=\"$${LOOPOVER_REPORTING_DB:-/reporting/loopover-reporting.sqlite}\"; test -s \"$$db\" && sqlite3 \"$$db\" 'PRAGMA quick_check;' | grep -q '^ok$'",
]
interval: 30s
timeout: 5s
Expand All @@ -837,7 +837,7 @@ services:

# Redacted AMS (gittensory-miner) ledger export -- a DEDICATED profile, not bundled into `observability`: unlike
# the engine's own reporting-exporter above, this only does anything useful when a miner is ALSO running on this
# same host with its ledgers under GITTENSORY_MINER_CONFIG_DIR (an engine-only maintainer deployment has nothing
# same host with its ledgers under LOOPOVER_MINER_CONFIG_DIR (an engine-only maintainer deployment has nothing
# for it to read). Grafana must never mount that directory directly -- attempt_log_events.reason/.payload_json
# are free-form and can carry arbitrary internal detail (#5184 follow-up / PR #5471's flagged confidentiality
# gap) -- so this exporter reads the live ledgers read-only and writes a redacted snapshot into the SAME shared
Expand All @@ -850,27 +850,27 @@ services:
profiles: ["ams-observability"]
volumes:
# Read-only live-ledger access for the exporter only -- Grafana does not get this mount (mirrors the
# /appdb:ro pattern above). Point this at the SAME host directory your miner uses as GITTENSORY_MINER_CONFIG_DIR.
- "${GITTENSORY_MINER_CONFIG_DIR:-~/.config/gittensory-miner}:/ams-ledgers:ro"
# /appdb:ro pattern above). Point this at the SAME host directory your miner uses as LOOPOVER_MINER_CONFIG_DIR.
- "${LOOPOVER_MINER_CONFIG_DIR:-~/.config/gittensory-miner}:/ams-ledgers:ro"
- grafana-reporting-data:/reporting
# Directory bind mount, not a single-file one -- see reporting-exporter's own comment above for why
# (a single-file mount pins to the pre-`git pull` inode and silently never picks up a script update).
- ./scripts:/scripts:ro
environment:
GITTENSORY_AMS_ATTEMPT_LOG_SOURCE_DB: "${GITTENSORY_AMS_ATTEMPT_LOG_SOURCE_DB:-/ams-ledgers/attempt-log.sqlite3}"
GITTENSORY_AMS_PREDICTION_LEDGER_SOURCE_DB: "${GITTENSORY_AMS_PREDICTION_LEDGER_SOURCE_DB:-/ams-ledgers/prediction-ledger.sqlite3}"
GITTENSORY_REPORTING_DIR: /reporting
LOOPOVER_REPORTING_DIR: /reporting
GITTENSORY_AMS_ATTEMPT_LOG_REPORTING_DB: "${GITTENSORY_AMS_ATTEMPT_LOG_REPORTING_DB:-/reporting/ams-attempt-log.sqlite}"
GITTENSORY_AMS_PREDICTION_LEDGER_REPORTING_DB: "${GITTENSORY_AMS_PREDICTION_LEDGER_REPORTING_DB:-/reporting/ams-prediction-ledger.sqlite}"
GITTENSORY_AMS_REPORTING_EXPORT_INTERVAL_SECONDS: "${GITTENSORY_AMS_REPORTING_EXPORT_INTERVAL_SECONDS:-30}"
LOOPOVER_AMS_REPORTING_EXPORT_INTERVAL_SECONDS: "${LOOPOVER_AMS_REPORTING_EXPORT_INTERVAL_SECONDS:-30}"
command:
- /bin/sh
- -c
- >-
apk add --no-cache sqlite >/dev/null 2>&1 &&
while true; do
sh /scripts/export-ams-reporting-db.sh || echo '[ams-reporting] export failed';
interval="$${GITTENSORY_AMS_REPORTING_EXPORT_INTERVAL_SECONDS:-30}";
interval="$${LOOPOVER_AMS_REPORTING_EXPORT_INTERVAL_SECONDS:-30}";
case "$$interval" in ''|*[!0-9]*) interval=30;; esac;
sleep "$$interval";
done
Expand Down
2 changes: 1 addition & 1 deletion grafana/dashboards/miner-usage.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"from": "now-7d",
"to": "now"
},
"description": "Per-provider coding-agent (claude-cli/codex-cli/agent-sdk) attempt outcomes, cost, and token usage for the Autonomous Miner System (AMS) -- a separate local CLI (gittensory-miner) from ORB, this dashboard's own AI usage. Reads the redacted attempt_outcome_summary rows exported from AMS's local attempt-log ledger (see packages/gittensory-miner/docs/observability.md) via the AMS Attempt Log SQLite datasource -- never the miner's live GITTENSORY_MINER_CONFIG_DIR ledgers, and never scraped from a Prometheus metrics path. All three coding-agent providers share one dashboard (a $provider template variable, not one dashboard per provider) since AMS's local ledger has far lower data volume than ORB's cloud reviewers. tokens_used is honestly 0/NULL until some future coding-agent driver reports real token usage (#5395) -- never fabricated.",
"description": "Per-provider coding-agent (claude-cli/codex-cli/agent-sdk) attempt outcomes, cost, and token usage for the Autonomous Miner System (AMS) -- a separate local CLI (gittensory-miner) from ORB, this dashboard's own AI usage. Reads the redacted attempt_outcome_summary rows exported from AMS's local attempt-log ledger (see packages/gittensory-miner/docs/observability.md) via the AMS Attempt Log SQLite datasource -- never the miner's live LOOPOVER_MINER_CONFIG_DIR ledgers, and never scraped from a Prometheus metrics path. All three coding-agent providers share one dashboard (a $provider template variable, not one dashboard per provider) since AMS's local ledger has far lower data volume than ORB's cloud reviewers. tokens_used is honestly 0/NULL until some future coding-agent driver reports real token usage (#5395) -- never fabricated.",
"annotations": {
"list": []
},
Expand Down
2 changes: 1 addition & 1 deletion grafana/provisioning/datasources/ams-ledgers.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# AMS (gittensory-miner) redacted SQLite reporting datasources (#5184).
#
# Grafana must not mount the miner's live GITTENSORY_MINER_CONFIG_DIR ledgers. The attempt log and prediction
# Grafana must not mount the miner's live LOOPOVER_MINER_CONFIG_DIR ledgers. The attempt log and prediction
# ledger contain free-form reasons, payload JSON, repo/target identifiers, readiness scores, and blocker/warning
# codes that are private AMS intelligence. Instead, expose only redacted reporting-export snapshots, mirroring the
# maintainer LoopoverDB pattern in sqlite.yml.
Expand Down
2 changes: 1 addition & 1 deletion k8s/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ points — review resource sizing, storage class, and your registry before apply
## Why a StatefulSet (not a Deployment)

The miner keeps all state in **local SQLite ledgers** (`claim-ledger.sqlite3`, `plan-store.sqlite3`, …) under
`GITTENSORY_MINER_CONFIG_DIR` (`/data/miner`). Those stores are **not safe for concurrent multi-pod access**, so
`LOOPOVER_MINER_CONFIG_DIR` (`/data/miner`). Those stores are **not safe for concurrent multi-pod access**, so
each worker needs its **own** volume. A Deployment can only mount a single shared PVC across every replica; a
**StatefulSet's `volumeClaimTemplates`** give each replica its own PersistentVolumeClaim — so scaling to N
replicas yields N workers with fully isolated state. That per-pod isolation is the whole reason these manifests
Expand Down
4 changes: 2 additions & 2 deletions k8s/miner-deployment.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Kubernetes workload for gittensory-miner (AMS) fleet mode (#5181).
#
# This is a StatefulSet, NOT a Deployment: the miner keeps all of its state in local SQLite ledgers
# (claim-ledger.sqlite3, plan-store.sqlite3, …) under GITTENSORY_MINER_CONFIG_DIR, and those stores are NOT
# (claim-ledger.sqlite3, plan-store.sqlite3, …) under LOOPOVER_MINER_CONFIG_DIR, and those stores are NOT
# safe for concurrent multi-pod access. A Deployment can only mount one shared PVC across every replica; a
# StatefulSet's volumeClaimTemplates give each replica its OWN PersistentVolumeClaim, so N workers run with
# fully isolated state — the safety property this manifest exists to guarantee. See k8s/README.md.
Expand Down Expand Up @@ -45,7 +45,7 @@ spec:
# ENTRYPOINT is `gittensory-miner`; `run` is the continuous fleet-worker loop.
args: ["run"]
env:
- name: GITTENSORY_MINER_CONFIG_DIR
- name: LOOPOVER_MINER_CONFIG_DIR
value: /data/miner
- name: GITHUB_TOKEN
valueFrom:
Expand Down
Loading
Loading