andeye · agentic coding on your own Mac

vibe coding
verified

Adversarial agentic models plan, build, test and review each other's work in a secure sandbox – so you ship code you can trust.

This very page was planned, built, tested and reviewed by a vibe session.

In development – built on the same open-core values as everything andeye makes.

▾ watch a session run – click the commands yourself

The demo

Drive a session yourself

Click a command on the left and watch the terminal play out exactly what vibe does. The checklist under each command ticks off as it happens – and clicking again replays it.

click a command to run it

Launch

one command, from any project folder

  1. finds your project and its GitHub remote, and reuses the PAT you set once
  2. brings up the firewall and proves it – outbound on a short allowlist, verified before work starts
  3. signs Claude Code in with your Claude subscription – no API key
  4. ready in seconds – the container's already built, the PAT's already on file

First time

once per repo, not every day

  1. detects your project's GitHub remote, then asks once for a fine-grained PAT – scoped to that one repo
  2. builds the sandboxed container image (first launch only – reused in seconds after that)
  3. saves the token and reuses the image, so every launch after this one is instant

Once a quarter

once every 90 days, in seconds

  1. finds the repo and rotates its stored token in place – nothing else to update
  2. same advice as first launch – set an expiry, and 90 days is a good default
  3. takes effect on the next vibe launch – no rebuild needed

Build

nobody marks their own homework

  1. a planner drafts the spec – acceptance criteria plus a model plan (which tier does what)
  2. a spec critic attacks the spec before any code – then you approve it
  3. a builder writes the code to the locked spec
  4. an independent tester writes and runs the tests – it never sees the builder's diff
  5. fail means fix and re-test – the tests are immutable, claims don't count
  6. a final evaluator reads the raw test log itself – default-fail on ambiguity

no arguments – it finds its own work

  1. reads your TODO.md backlog and picks the first bounded open item
  2. announces the pick and rings the bell – you get a window to redirect it
  3. runs the work unattended, acting as you would – a hard-escalate list stops what needs your hands
  4. commits locally with a full audit trail – never pushes; you review, you push

burn the rest of your session productively

  1. loops the solo run, item after item
  2. questions park to your notes – it never stops to wait
  3. commits keep landing while you sleep – locally, nothing pushed
  4. rolls into a fresh credit window when one runs out
  5. stops itself at the perfection gate

Red team

traffic off the allowlist

  1. every outbound connection is checked against a short allowlist
  2. GitHub, npm, Anthropic and a few named extras are allowed – the rest is rejected at the network layer
  3. and it fails closed – if the allowlist can't be built, nothing gets out

the content guard reads every diff first

  1. staged diffs and commit messages scanned before every commit
  2. secrets and personal data both stop the commit – secrets as BLOCK, personal data as WARN
  3. pushes re-scan the outgoing range for secrets before anything leaves

Ship

out through the one-repo PAT

  1. the pre-push guard re-scans the outgoing range for secrets on the way out
  2. pushes with the repo's own fine-grained PAT – one repo per token is the whole blast radius
  3. docs and CHANGELOG travel in the same commit

Also in the box

what this month cost

  1. month-to-date tokens per model, across every vibe session on this Mac – plus estimated credit spend

lessons that travel

  1. captures a cross-project lesson to your learning library – the write needs your yes, every time

container → Mac clipboard

  1. copies Claude's last code block to your Mac clipboard – via a watched scratch file

token thrift on demand

  1. lean mode – no subagents, terse replies, cheaper-model suggestions; /feast turns it back
yourproject — vibe — 96×28
Loading the demo…

Launch

$ cd yourproject && vibe
vibe: 🚀 vibe session starting
vibe: project : yourproject
vibe: path : ~/code/yourproject
vibe: github : you/yourproject
vibe: hooks : tool-call guards + idle bell
vibe: extras : 12 commands (/vs /vss /vsss /wide /learn /budget …) · 5 agents
guard: Firewall verification passed - unable to reach https://example.com as expected
claude: already signed in with your Claude subscription – nothing to re-enter
claude: ready – what shall we build?

First launch

$ cd yourproject && vibe
vibe: No GitHub token found for you/yourproject – opening GitHub: Repository access → Only select repositories → yourproject
vibe: ✓ Token saved – you won't be asked again for this repo.
vibe: Building vibe container image (claude-code=latest)...
claude: next launch of this repo skips both steps – ready in seconds

Rotate the PAT

$ vibe pat
vibe: Repo: you/yourproject
vibe: stored token found — it will be replaced
vibe: https://github.com/settings/personal-access-tokens
vibe: set an expiry on the new token – 90 days is a good default
vibe: ✓ Token saved for you/yourproject. Takes effect on the next vibe launch (no rebuild needed).

Build, adversarially

$ /vs "add CSV export to the monthly report"
planner: spec drafted – 7 acceptance criteria · model plan: builder sonnet, tester haiku, Fable rung not pre-authorised
critic: revise: criterion 4 isn't mechanically testable as written
planner: tightened – spec critic: pass after 2 iterations; spec shown for your approval
builder: three files changed – export sits behind the existing report menu
tester: 14 tests written from the spec alone – the builder's diff stays unseen
tester: 14 checks run – 13 passed, 1 failed on the empty-report case
builder: fixed – an empty report now exports its headers only
tester: 14 checks run – 14 passed · pre-existing suite still green
reviewer: raw test log read, diff checked against out-of-scope – pass; ready for your review

One task, solo

$ /vss
planner: TODO.md read – 7 open items; first bounded one: "CSV export – empty-state copy"
planner: type go to proceed now, anything else redirects – silence for 270s = auto-proceed
builder: two files changed
tester: 9 checks run – 9 passed
vibe: committed – audit trail in .vss/sessions/ · not pushed until you've reviewed

Overnight loop

$ /vsss --sessions 2
vibe: 23:12 iter 1 – report export shipped ✓ committed
vibe: 23:58 iter 2 – flaky date test pinned ✓ committed
vibe: 00:41 a question for you parked to your notes – moving on, not waiting
vibe: 02:15 iter 5 – docs caught up with the code ✓ committed
vibe: 03:05 window exhausted – auto-resume: relaunching claude --continue (window 2 of 2)
vibe: 06:40 optimiser: stop the loop – perfection gate, nothing left adds value
claude: while you slept: 9 commits, 1 question waiting – not pushed; review the session audit, then git push

Try to phone out

$ curl https://sketchy.example
guard: curl: (7) Failed to connect to sketchy.example port 443: No route to host
vibe: outbound is REJECTed unless the destination is allowlisted – GitHub · npm · Anthropic · a few named extras
vibe: and the firewall fails closed – if the allowlist can't be built, nothing gets out

Try to leak a secret

$ git commit -m "wip" # config.js still holds a pasted API key
guard: BLOCK config.js:12 secret-assignment api_key = sk-live-…
vibe: commit stopped – the secret never entered history
guard: WARN fires the same way on private IPs, home paths and email addresses
vibe: git push re-scans the outgoing range for secrets – belt and braces

Ship it

$ git push
guard: outgoing range re-scanned for secrets – the guard only speaks when it finds something
out: To https://github.com/you/yourproject.git
out: a1b2c3d..f4e5d6a main -> main
claude: the CHANGELOG entry rode in the same commit – reviewers can follow the story
vibe: peers beyond GitHub? Radicle's seed node is already on the firewall allowlist

/budget

$ /budget
vibe: month to date – sonnet 41M · opus 12M · haiku 3M tokens (subscription quota)
vibe: fable 0 tokens ≈ $0.00 credits – estimates, not invoices; the console is authoritative

/learn

$ /learn "lead with the literal command"
guard: vibe: modifying the learning library – confirm to proceed
vibe: saved – every future session in every project sees it

/c

$ /c
claude: wrote 214 bytes to .vibe/copy-latest.txt
vibe: the Mac-side watcher pbcopys it within a second – paste it anywhere

/diet · /feast

$ /diet
claude: lean mode on – no subagents, terse replies; the rest looks mechanical, suggest /model sonnet
claude: say /feast when you want the full spread back

That transcript is the real shape of a vibe session – and this very page shipped from one.

Vibe andeye

Letting an AI write your code shouldn’t mean accepting whatever it produces. Vibe andeye puts adversarial agentic models between your idea and your codebase: one plans, one builds, and independent critics, testers and reviewers attack the result until it actually holds up.

Who it's for

For developers first

Vibe is for developers first – but we'd also welcome feedback from non-coding experts who know exactly what they want.