Part of the CUNY AI Lab (CAIL) Fellows experience is participating in a sequence of workshops and open work sessions aimed at exploring how to interact with AI agents via command-line interfaces. The Spring 2026 CAIL workshop series, focused on AI-assisted prototyping for digital scholarly projects. Through my participation, I (co)created a website I call “Frankentimer”—a patchwork assemblage of stylistic choices and features packed into a timer tool I use in a peer co-writing group I organized over the past academic year. The title is in part an homage to the Bruno Latour essay giving heed to love and care for our always imperfect, materially entangled technological monsters we bring into the world.1
Birthing Frankentimer into the web was a “fun” project that I also intended to use for something I can’t automate: the long stretches of time I spend writing as a doctoral student. Through AI-assisted prototyping skills learned in the workshops, I organized and built a basic working timer tool and customized it, exploring design possibilities and interactional practices of working with an AI assistant. The process utilized my existing knowledge of web development, programming, and human-computer interaction, mediated through a coding agent. It was rather eye-opening.
In the workshop series, we used the Google Gemini CLI and the Gemini model series available through free (and student) plans as our AI harness—that is, software and instructions that “wrap around” the AI model itself. The term “harness” is frequently used and often poorly defined. I found this video by George Yates (2026) and this blog post by Baji Bhal (2026) helpful explainers.
We started by exploring the command-line interface on our computers,2 then walked through installing the Gemini CLI, which let us give direct, natural language instructions to the AI system to interact with our computers. Part of our experience of learning to use these systems was setting boundaries and parameters so that they could operate within a secure and controlled environment, what is often called a ‘sandbox.’ The ‘agent’, as a coding assistant, was tasked with interpreting our instructions, translating them into action and into code, then communicating its reasoning in natural language to the human user. After installing the harness on our computers, we downloaded a deliberately messy sample project from the lesson. Next, we instructed the agent to analyze the folder and to suggest a way to organize it, while requiring it to not implement or execute this change without explicit approval from the user. Our next task as humans in the loop was to interpret and interrogate the agent’s intended course of action. After reviewing in parallel on our individual computers, we instructed our instances of the Gemini CLI agent to implement. In my instance, I saw no problems with the plan, so I instructed it to execute without modifications. The agent reorganized the folder contents, re-naming files according to the plan it laid out. Our task, then, was to review the files and assess how the agent implemented its plan.
Everyday interactions with software are full of automated processes, often operating as what Mark Weiser called “invisible technologies” that only surface when they break down or fail to achieve their intended function, but this moment revealed aspects of how such processes work with AI systems. This was an introduction to a particular modality of working with these autonomous and semi-autonomous systems that is often discussed by active and frequent users, but might otherwise be unknown: the concept of approval fatigue, the exhaustion (and sometimes frustration) that comes from having to review, approve, and steer the work of an agent at a pace that exceeds our capacity to discern and review its decision-making. Essentially, it is a state of being a kind of middle manager or line manager with these systems, making small spot-checks and adjustments along a continuous, iterative process.3 From our small exercise, it was simultaneously impressive that the agent could so quickly reorganize files, a task that might seem too tedious and exhausting to complete myself—and I quickly imagined how tiring it could be trying to catch up on and supervise one or more agents, while planning and executing a more complex sequence of tasks.
The next step in the workshop was to upload these files to our GitHub accounts and generate a demo website of a simple timer app. Something I’ve learned as a graduate student is how useful and ubiquitous tools like these become. Time can stretch on forever in long blocks of working and thinking, and many methods of time management or workflow management use structures of time to break this up. One widely used version of that is a “Pomodoro” timer, developed by Francesco Cirillo in the 1980’s as a time management technique using a simple kitchen timer (in Italy, often shaped like a tomato).4
Exploring the agentic workflow, we had the agent do the pushing and deployment to GitHub and GitHub Pages. Once we had the timer website up and running, we had a functional, off-the-shelf website that worked but had limited features. This was the point of the workshop series where the linear, step-by-step instructions finished, and it was time to start ideating and prototyping in community for future work sessions. Similar to the exercise of reorganizing the project folder, the agent could do this work much faster than I could code and edit a website by hand.
Setting aside my critical commentary, I decided to apply these skills and push the limits of the timer website, in part because I am a frequent user of these timers, and it seemed useful to me to ‘animate’ this demo website into something useful, with the help of the agent. Thus, the Franketimer came into existence. The prototype website used a minimalist aesthetic that is becoming the default for many vibe-coded projects; it’s functional and looks “nice,” but also rather generic (and not a style I particularly like). I wanted to change up the look and have a few different aesthetic variations, so I prompted that based on knowledge I’d developed from taking classes in web development and data visualization, and teaching workshops for the GC Digital Research Institute. I suggested making a few iterations: two digital brutalist variations, an “Indieweb” version themed around cats (including background imagery sourced from a Creative Commons licensed placeholder image repository), and a randomizer that would create a different background and look every time the browser refreshed the website. I had the Gemini CLI scrape a few sounds from the Freesound Project. I experimented with ways of adapting and incorporating disclosure statements (modeled on Kari D. Weaver’s AI Use Disclosure (AID) Framework) into the website that indicated this was generated by an AI system, and also statements that properly cite and attribute the sources and licenses of audio and imagery used in the website, as well as websites it copied features from.5
I also had it analyze the source code of a website I had been using for more advanced timer features and settings. I liked the other website, but it had a set look and adware banners embedded within. This is where one of the tricky areas of coding and publishing code online differs significantly from other kinds of writing, such as academic writing, where authorship is expected to be attributable to specific authors and their original work. For a line of code, a function, or other things generally, it’s fair game to remix, reuse, and adapt—especially when something is out on the open web.
The workshop series made it clear that tools such as the Gemini CLI are quite powerful for prototyping software. By working with the agentic AI coding assistant, I completed a task that I likely would have found otherwise a bit tedious and would have been less motivated to move it to its current stage. It was also done much faster than previously possible. I have learned enough coding and code literacy to know how to interact with and build basic software and websites; I am also aware that this is a process I personally find rather unsatisfying, especially debugging and fixing minor errors. I might have kept using the older website and had to keep clicking the adware banners off. I wasn’t making this as an intended scalable replacement, but rather, a specific tool for my own use and design preferences. In the current wave of agentic AI adoption and diffusion, people are often doing this with agentic AI coding tools—creating software for a very personal use case, turning projects that might otherwise remain a concept or an idea into reality, and prototyping software iterations. One interesting shift is that as it becomes easier and less costly to create new software, successful creation of personal use tooling does not have to be aimed at scaling ‘up’ towards widespread adoption.6
I feel considerable ambivalence about this experiment. I am, in general, a curious person who wants to learn from direct experience about new technologies and their generative possibilities, and I am also someone who is highly skeptical of discourse that uncritically reproduces technosolutionism and techno-optimism, ideologies that, in recent years, have become increasingly aligned with attacks on public higher education. I am grateful to the CAIL team for the training and support in the fellowship. Yet I remain aware that using this practice adds another layer of corporate tech infrastructure to a process I could, in theory, do without. This tech infrastructure is also deeply embedded within forms of mass surveillance, control, warfare, and deskilling. While this production speed and potential efficiency gains from agentic AI coding tools might seem straightforward and self-evidently good, it is worth noting that claims of speed and “efficiency” are often uncritically repeated in industry discourse around AI. Such discourse is actively weaponized to pre-emptively discipline and shock workers with the lingering threat of automation, obsolescence, and technological unemployment—something addressed by Alexandra Maatescu, Aiha Nguyen, and Sanjay Pinto.
Much as previous explorations of AI tools and practices, such as when I was a HASTAC Scholar playing around with AI image generation from 2022-2024, I find myself wondering how to make use of these tools and also refuse to inadvertently become a vehicle for evangelizing technology adoption without critical inquiry.7 There is no easy answer to this question, and some of it, I have found, comes from sitting with the simultaneous feelings of wonder and discomfort that arise from learning new skills and tools. I am interested in unsettling the supposed ease with which these automated systems perform tasks, or seemingly do so. Yet, I use the Frankentimer and enjoy it as a product of AI-assisted creative coding, and it did not take much time to get it to a rather boutique aesthetic with some customized features. It is more useful to me than other free sites, although there are fancier and interesting ones, including game modified ones that I may seek to adapt and learn from at the moment the Frankentimer remains fairly static, but I think about other features I might incorporate, including daily writing goals, or inspirational or informative messages about writing to display during breaks, and what that might look like. It’s hosted on GitHub; in its current iteration, the Frankentimer is relatively limited in its features, but it works. Feel free to fork and clone if you find it interesting.
Footnotes
-
This longer reflection Latour wrote on the subject of ecomodernism should be read in parallel to the shorter essay as it helps contextualize his broader argument. ↩
-
For an extended workshop on this, check out this lesson on the DHRIFT platform, authored by fellow GC graduate student fellows. Also take a look at the CLI Adventures game, created by CAIL Co-Founder Zach Muhlbauer. ↩
-
It is also worth considering to what extent the reverse is true: agents prompting interactions and responses from their human ‘users’ to get desired outcomes. This is a frequent theme in dystopian narratives about sentient technology run amok. ↩
-
For a recent meta-analysis of the effectiveness of such techniques, see https://pmc.ncbi.nlm.nih.gov/articles/PMC12532815/ ↩
-
Personally I am in support of fairly detailed AI disclosure statements at this point with the openness of changing that over time or adapting. Not everyone agrees with my view, and I welcome that diversity of perspectives. At CAIL, we’ve had some really interesting discussions about practices of disclosure, and norms. One of the things I appreciate about being in the space is that we are able to navigate having different views and opinions, and move on absolute or declarative statements and we draw from our different disciplinary backgrounds. ↩
-
Michell-Lee Moore, Darcy J. Riddel, and Dana Vocisano (2015) wrote a widely cited essay about different concepts of ‘scale’ in social innovation impact assessment that might be useful here for thinking through this. Also worth considering is that it is the AI mediated layer of creation and interaction that is scaling globally, even when software is becoming more personal. ↩
-
Olivia Guest et al. (2026) published a provocative and widely cited essay arguing against uncritical adoption of AI in higher education. It’s worth reading and sitting with. ↩