sntxrr
Loading activity
I'm a long time swamp dweller.. I've named VPS servers moss, soggy, sodden, peat..
- I made my terminal look like a swamp (and it croaks)blog.sntxrr.devapproved
- Learning in the Open, Applying in the Openblog.sntxrr.devapproved
- AI Doesn't Replace On-Call Judgmentblog.sntxrr.devapproved
- #3886studio: no favicon — /favicon.ico 404s and the page declares no iconShippedbug
- #3729swamp serve: remote 'model method history get|logs' cannot find a run that remote 'history search' listsShippedbug
- #3722Expose run provenance (definitionHash, modelVersion, triggeredBy) in method-summary reports or the extension contextShippedfeature
- #2999s3-datastore: pull never removes files deleted on the remote, so a peer's next push re-uploads them and undoes `swamp data gc`Shippedbug
- #2998s3-datastore: every fast-path miss re-downloads every _index shard, so a busy serve pulls the whole index every poll (~230 GB/day S3 egress)Shippedbug
1password Connect
A swamp vault backend for 1Password Connect — read and write secrets over Connect's HTTP API with a bearer token, so vault.get() works headless in cron, containers, and swamp serve without the op CLI.
Home Ip
Resolve the current public IPv4 address and keep a 1Password field in sync with it via 1Password Connect
Swamp Triage
Investigate why any swamp model or workflow is failing, without knowing anything about the domain it automates. Every method and workflow run leaves a @swamp/method-summary or @swamp/workflow-summary report behind as versioned model data, written on failure as well as success — so the full history of a target is already on disk with nothing extra instrumented. `investigate` resolves a target by name at call time, walks that history back to the boundary where it stopped working, and classifies the error into auth / unreachable / timeout / tls / rate_limit / not_found / config, each with a concrete next step. The distinction it exists to make is auth vs unreachable: a remote answering 403 is healthy and rejecting your credential (go to the vault), while a remote that never answers is a network problem (go to the host) — the two read almost identically in a notification and lead opposite ways. Unrecognised errors are reported as `unknown` verbatim rather than filed under a plausible-looking category. A run that failed without recording any error text is reported as `unrecorded`, never as `none`. `recent` answers the question an alert with no name leaves open -- what just broke? -- by listing every model and workflow that failed within a window -- still failing first, then those that have since recovered, with when -- each with its instance name and model type and classified the same way. Both methods tell the caller's mistakes apart from the fleet's failures: `recent` flags the investigator's own failed runs (selfInflicted) and a failure fixed by an immediate retry of the same method (quickRetry), reports each target's definition path, and lists scheduled workflows with no recorded run at all (a schedule that never fires leaves no failure anywhere else); `investigate` reports a target with no runs as never_run -- failing when it is scheduled to run here -- suggests the closest names for one that matches nothing, and separates a rejected call argument (caller_args) from a definition problem (config). A failed workflow step is reported with the error its own run recorded, and an expression that failed to evaluate classifies as config. `resolve` maps free alert text to the model and workflow names it most likely means -- token overlap with names, types, tags and descriptions, top matches with score -- for an alert that does not name its target. Read-only: every method reads what previous runs recorded and never invokes the failing target.
Credential Expiry
Probe the credentials a fleet actually holds and report how long each has left, distinguishing expiry from an outage in progress
Vikunja Kanban
Vikunja kanban orchestrator — creates tasks in a Vikunja project directly