Abartleby: Automate the US Visa Bureaucracy

nerdypepper2 pts0 comments

breezykermo.tngl.sh/abartleby at main · Tangled

breezykermo.tngl.sh

abartleby

Star

Fork

Atom

Configure Feed

Issues

Pull Requests

Commits

Tags

Feed URL

Select the types of activity you want to include in your feed.

i would prefer not to

Star

Fork

Atom

Configure Feed

Issues

Pull Requests

Commits

Tags

Feed URL

Select the types of activity you want to include in your feed.

Rust

95.7%

Nix

4.3%

Shell

0.1%

main

No tags found

13

Code

Clone this repository

Use permalink

HTTPS

https://tangled.org/breezykermo.tngl.sh/abartleby<br>https://tangled.org/did:plc:iy7uvtkole4fggi56hk3ih3l<br>getComputedStyle(s).display !== 'none').textContent)"<br>class="px-3 py-2 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200"<br>title="Copy to clipboard"

SSH

git@tangled.org:breezykermo.tngl.sh/abartleby<br>git@tangled.org:did:plc:iy7uvtkole4fggi56hk3ih3l<br>getComputedStyle(s).display !== 'none').textContent)"<br>class="px-3 py-2 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200"<br>title="Copy to clipboard"

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz

Download .zip

.abacus

2 hours ago

.beads

1 hour ago

src

1 hour ago

.env.example

2 hours ago

.envrc

1 hour ago

.gitignore

1 hour ago

Cargo.lock

1 hour ago

Cargo.toml

1 hour ago

README.md

50 minutes ago

flake.lock

1 hour ago

flake.nix

1 hour ago

Commits<br>13

:nail_care: readme

c0e21549

breezykermo.tngl.sh

48 minutes ago

main

:lipstick: readme

c3e52eef

breezykermo.tngl.sh

53 minutes ago

-> abartleby

a964aa21

breezykermo.tngl.sh

58 minutes ago

Allow --local-always for watch

e6651e79

breezykermo.tngl.sh

1 hour ago

Branches

main

48 minutes ago

Default

README.md

abartleby#

Melville's Bartleby answered every request with "I would prefer not to," and<br>the visa bureaucracy, ever faithful to his spirit, has been doing the same ever<br>since. abartleby is that clerk's deviant subspecies. The name starts with the<br>German Abart — an aberration, an anomalous mutation — and its adjective<br>abartig, deviant and abnormal and atrocious (just the sort of imp a visa<br>office would love to swat off its portal). Meanwhile, the Irish Abarta is the<br>trickster who offers himself as a servant while quietly serving his own agenda,<br>and Abhartach, from the same mythic tradition, is the one who refuses to stay<br>dead.

abartleby is a small CLI tool that watches the authenticated<br>appointment-schedule page on ais.usvisa-info.com and pings you by desktop<br>notification and Discord webhook the second a slot opens up. Where the clerk<br>prefers not to, this one prefers to. It just keeps checking the page, no<br>complaints, as many times as you want, for as long as the bureaucracy keeps<br>stonewalling you. Sorry, Bartleby.

This is a read-only diagnostic monitor . It tells you a slot opened; that is<br>where its ambition ends. It never books, reschedules, cancels, or clicks<br>anything on the site for you — it would prefer not to. You do the booking<br>yourself, by hand, once alerted.

The problem it solves#

US visa appointment slots — particularly for exchange-visitor (J1) and other<br>non-immigrant visa classes at consulates with heavy backlogs — open up<br>unpredictably and get taken within seconds. Refreshing the schedule page by hand<br>every few minutes, all day, for weeks, is the kind of penance that turns<br>otherwise reasonable people into Bartlebys of their own: staring at a wall,<br>preferring not to. Someone should do the refreshing who has no soul to grind<br>down.

That someone is abartleby. It automates only the checking part: it signs in<br>with your own credentials, reads the schedule page, parses the per-consulate<br>earliest-date table, and pings you the instant availability changes. See the<br>original problem description<br>for the full backstory.

What it does#

check — runs a single poll: signs in, reads the schedule page, parses<br>availability, compares against the last seen state, and notifies on change.<br>Exit code 10 means slots are currently available; 0 means none; 1 is an<br>error. (Yes, 10 for the good news — the bureaucracy has never once given you<br>a straight answer either.)

watch — polls tirelessly at a clamped interval (minimum 5 minutes, default<br>10m, with up to 60s of jitter so it doesn't tick like a metronome and give<br>itself away). It shrugs off individual cycle failures and keeps going; if five<br>cycles fail in a row it stops sulking quietly and sends a Discord warning.

The notification body contains only the list of consulates and their earliest<br>available dates, plus a link to the schedule page. Nothing else — no small talk,<br>no sales pitch, no "I would prefer not to."

Why it is safe (no accidental side effects)#

For all its scheming, the trickster keeps his hands where you can see them. The<br>only HTTP requests the tool ever makes are:

Endpoint<br>Method<br>Purpose

/users/sign_in<br>GET<br>fetch the login page and its CSRF token

/users/sign_in<br>POST<br>authenticate (the login form you would submit by...

abartleby hour breezykermo tngl text gray

Related Articles