Skip to content

installer: the release config.yaml is confirm-mode production, not "the paper profile" #556

Description

@eaitbrahim

scripts/install.sh tells the operator, twice, that the config.yaml it installs is the paper profile and cannot place a live order. It is the production config in auto_trade.mode: confirm.

Where

scripts/install.sh, step 6/7, the branch that copies the config:

say "  installing the release's default config.yaml beside the venv (the paper profile)"
cp "${TMP_DIR}/config.yaml" "${KEEL_DIR}/config.yaml"

and again in the closing next-steps block:

printf '  paper:       config.yaml beside the venv is the default paper profile -- nothing in\n'
printf '               it can place a live order. To fetch candles you will want a free,\n'

What the file actually is

The asset the script downloads — https://github.com/CodeGateSoftware/keel/releases/download/v0.11.2/config.yaml — opens with:

# keel PRODUCTION configuration -- the `config.yaml` attached to a GitHub Release.
#
# Shipped in `auto_trade.mode: confirm`: keel previews every order and waits for your explicit
# approval before placing it. It is ready for live use, but it will never trade unattended off a
# fresh download -- that is a separate, deliberate decision.

and contains:

auto_trade:
  # confirm = preview + explicit approval for every order (the safe live default).
  mode: confirm

release.yml produces it with cp keel/templates/config.live.yaml config.yaml, and the workflow's own comment calls it "the confirm-mode production config".

keel's own CLI draws the line clearly. keel/cli.py, init-config --live:

"Write the PRODUCTION template (mode: confirm) instead of the dev one (mode: paper)."
"--live writes the same production config that is attached to a GitHub Release: real allowlist/caps in mode: confirm, which previews every order and waits for your approval. Without it you get the dev template in mode: paper, which places nothing at all."

and elsewhere: "config.auto_trade.mode (paper simulates, confirm is live)".

So confirm is the live profile with a per-order approval gate. It is not paper.

Why it matters

The installer's next-steps block prints the "paper profile / cannot place a live order" reassurance directly above the line telling the operator to put a Coinbase CDP key in ~/.keel/.env. An operator who reads the reassurance, adds credentials, and later approves a preview will place a real order from a config they were told was simulation-only.

The gate makes this hard to do accidentally, which is good design — but the reassurance is what someone leans on when deciding how carefully to treat the file, and it is wrong in the direction that costs money.

Suggested fix

Say what it is in both places:

say "  installing the release's production config.yaml beside the venv (auto_trade.mode: confirm --
      previews every order and waits for your approval; not the paper template)"

and in next-steps, point at the paper template rather than claiming to have installed it:

  config:      config.yaml beside the venv is the release's PRODUCTION config, in
               auto_trade.mode: confirm -- keel previews each rule-driven entry and asks
               before placing it (a y/N prompt, defaulting to no). The kill switch fails
               closed, so a fresh deployment trades nothing until `keel resume`.
               For a config that cannot place a live order at all, run from ~/.keel:
                 ./.venv/bin/keel init-config --force     (writes the mode: paper template)

Also worth a look

  • docs/desktop-install.md and the release-notes template both promise a singular SHA256SUMS.txt. release.yml emits one file per leg: SHA256SUMS-macOS-arm64.txt, SHA256SUMS-macOS-x86_64.txt, SHA256SUMS-Windows-x86_64.txt.
  • README.md's "Try it in five minutes" says "the macOS/Windows app is on the [releases page]". That is true only of v0.11.0, which carries keel-0.11.0-arm64.dmg, keel-0.11.0-x86_64.dmg and keel-0.11.0-windows-x86_64.zip. Neither v0.11.1 nor v0.11.2 carries any bundle, because release.yml's desktop input defaults to build rather than publish-unsigned. A reader following the README to the latest release finds wheels only.

Found via

Syncing keeltrading.com against keel. The website had faithfully mirrored the installer's wording; the false claim was caught in review and corrected on the site in CodeGateSoftware/keeltrading.com#88.

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingfixBug fix (groups under Fixes)toolingDev/release tooling (Docs, CI & tooling)

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions