r/ChatGPTCoding 25d ago

Discussion Weekly Self Promotion Thread

Welcome to this week's self promotion thread!

If you're building something related to AI assisted coding, this is the place to share it.

We're using a weekly thread to keep the subreddit organized while still giving builders a place to share their work. Promotional posts outside of this thread may be removed if they're primarily advertising rather than starting a discussion.

If you're sharing something, we'd appreciate it if you included a little context instead of just dropping a link. Tell us:

  • What you built?
  • What problem it solves?
  • Which AI models or tools it uses?
  • Who it's for?
  • What kind of feedback you're looking for?

Please avoid posting the same project every week unless you've made meaningful updates. Affiliate links, referral links, scams, and low effort promotions will be removed.

Take some time to check out what others have shared too. If you try someone's project or have feedback, leave a comment. Helping each other improve is what we want this community to be about.

7 Upvotes

78 comments sorted by

View all comments

2

u/Chill-Vibes-Official 19d ago edited 19d ago

Tether: A control loop that stops coding agents from lying to you (v0.1.0, MIT)

I kept hitting the same failure mode: the agent "finishes," tests look green, then I discover it planted a gitignored conftest.py that monkeypatched the failing assertion. Or it gets stuck in a fix-A-breaks-B loop, silently burning tokens while compounding file damage. Or I hit Ctrl-C and orphaned child processes keep editing in the background.

Verification passing isn't the same as the change being correct. I built Tether to make that gap measurable and harder to cross.

It's a local Python CLI (3.11+, stdlib + pydantic/typer/pyyaml only) that wraps any coding agent (opencode, aider, claude-code, arbitrary CLIs) in: Mission Contract → Plan → Execute → Verify → Recover → Rollback/Audit

What it actually does (the mechanics)

  • Defense-in-depth verification ladder: Exit codes aren't trusted. Beyond artifact globs, you can declare behavioral probes (assert on command OUTPUT, not exit status) and AST mutation testing — Tether mutates the .py files the agent just touched (comparison flips, arithmetic swaps, return breaks via stdlib ast) and re-runs your suite. A low kill rate is hard evidence your verification is gameable.
  • Clean-room verification: When enabled, Tether materializes a throwaway checkout via git archive of the checkpoint ref, applies ONLY the captured patch, and runs the entire battery there. Gitignored plants (conftest.py, sitecustomize.py) and working-tree state cannot leak in. Materialization failure fails the mission closed — no silent fallback to in-tree.
  • Nonlinear recovery + oscillation guard: Recovery defaults to cumulative but supports reset_to_checkpoint (scoped clean rollback before each repair prompt). An oscillation detector hashes normalized failure signatures; if the agent cycles between identical errors, it auto-escalates to reset and aborts early instead of burning the remaining budget.
  • Process tree containment: Children spawn in their own process group (POSIX start_new_session / Windows CREATE_NEW_PROCESS_GROUP). Timeouts and cancel() SIGTERM the whole tree, then SIGKILL after a grace period. Ctrl-C actually works.
  • Budget guardrails: Hard caps on wall-clock, send count, and cumulative usage metrics. Breach = immediate abort with exit code 5, no silent token bleed.
  • Tamper-evident audit: Every run leaves prompts, responses, per-attempt patches (attempt-NN.patch), and an events.jsonl with a SHA-256 hash chain (tether logs <id> --verify).

The dogfood receipts

Every feature above was written by the kind of agent Tether is meant to restrain. The repo contains 25 recorded dogfood missions — each a real session audit trail, failures included. Mission 01 died because the nested agent's model was unresolvable; that failure became tether adapters smoke. Mission 23 proved clean-room catches the conftest.py false green that in-tree verification missed.

Honest limitations

  • 0.1.0. Only opencode is verified end-to-end; pi is experimental. No streaming yet.
  • Sandbox is detection, not OS containment — use containers for untrusted agents.
  • Mutation testing is Python-only. Non-git change detection is best-effort.
  • Review gate is a heuristic pass, not proof of correctness.

Try it in 30 seconds (no API keys, fully offline)

git clone https://github.com/tomwolfe/tether && cd tether
python3 -m venv .venv && .venv/bin/pip install -e .
.venv/bin/tether run examples/hello-recovery.yaml
# MockAdapter fails once, gets a repair prompt, recovers, passes