Skip to main content

Always Attend

An attendance CLI built for agents.
Always-Attend inspects what is open, collects evidence, matches candidates, and submits only when it is confident.

Always-Attend does what most people do manually: find the code, figure out which slot it belongs to, and submit it. It checks what's actually open, pulls candidates from Gmail, Moodle, Ed, and GOG, and submits only when it's confident.

It's built to be run by an agent. The external sources are eyes, and attend is the hand. The agent is the one that decides.

Philosophy

Always-Attend checks before it acts, looking at what's actually open, then gathering evidence from multiple sources before making a move.

This makes it composable with AI agents in a way that scripts rarely are. An agent can inspect, reason, and decide, or hand off entirely and let Always-Attend run the loop. Either way, the result comes back as structured JSON, so the agent knows exactly what happened and what's left.

For Agents

Copy this prompt and give it to your agent:

Bootstrap always-attend on this machine.

Read and follow:
https://raw.githubusercontent.com/bunizao/always-attend/main/skills/BOOTSTRAP.md

Resolve any issues you encounter autonomously before moving to the next step.

Quick Start

uv tool install always-attend
attend setup

What It Does

  • Inspect the attendance site DOM before guessing from external sources
  • Collect structured code candidates from Gmail, Moodle, Ed, and GOG
  • Package text and image evidence for multimodal reasoning
  • Submit guarded high-confidence matches
  • Report rejected, locked, and unresolved items in JSON

Story

The following is excerpted from a reflection I wrote in my FIT1045 H3 report.

I've been developing Always-Attend for two months now. There are already more than 150 commits, and the project has grown from a small 500-line script into something I'm genuinely proud of. Today it has over 30 Python files and around 6,000 lines of code. Modern, elegant, and useful, something I believe many people would enjoy.

Along the way, AI helped me move faster. Codex and Claude Code set up test frameworks, caught bugs, and iterated alongside me. But the thinking was always mine, the architecture, the decisions, the refactoring over details no one would ever notice.

Then ChatGPT Atlas launched. I watched it find the attendance code in Gmail, open a GitHub issue, and fill the form, all on its own. For a moment, I thought: Always-Attend doesn't matter anymore. It felt like every startup story I'd heard, quietly replaced by something shinier and better-funded.

I kept building anyway. Not to compete, but to finish what I started.

Somewhere in that process, the project stopped being just a tool. It became a record of how I think, my curiosity, my patience, and the slow satisfaction of watching something come alive line by line.


That was then. Now, Always-Attend is leaning into what once felt like a threat. The next chapter is agentic, less scripting, more thinking. Less automation, more autonomy. The tool that once felt obsolete is still figuring out what it wants to be when it grows up.


License

GPL-3.0

Metadata

Release files for always-attend 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for always-attend 0.2.0
File Size Uploaded Provenance Actions
always_attend-0.2.0.tar.gz 97.1 kB With provenance Details for always_attend-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for always-attend 0.2.0
File Interpreter ABI Platform Actions
always_attend-0.2.0-py3-none-any.whl Python 3 none any Details for always_attend-0.2.0-py3-none-any.whl

Total release size: 196.4 kB

Release files / always_attend-0.2.0.tar.gz

Download URL always_attend-0.2.0.tar.gz
Size 97.1 kB
Tags Source
SHA-256 checksum
How to use checksums
0b86254f45f72cc0b5919d4862c7d082799e6269671d22357181324edcd0f236
BLAKE2b-256 checksum
How to use checksums
130a4b84259292665e6b8f02bf9ad567fd92fee323c388760a6305f53aa77dce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 20, 2026.

Transparency log

Release files / always_attend-0.2.0-py3-none-any.whl

Download URL always_attend-0.2.0-py3-none-any.whl
Size 99.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ec4177ad08ded502731df8f7cb5ecbf90d9403a4784cbe3e31b7d938207faf5f
BLAKE2b-256 checksum
How to use checksums
3058df4f8248f95ef07f14ffc1ec0377d144f9b6b4090d0eecdd7eb0fbeecabc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 20, 2026.

Transparency log

Security for always-attend 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for always_attend-0.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 20, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page