Notes
My Dog Lucas Is Now Walking in My Portfolio, Too
How I brought Lucas into my portfolio by moving from generated poses to one continuous AI-generated walk.
Putting Lucas in the new portfolio
I recently redesigned this portfolio from scratch. The new top page has four navigation links around the edges and an ASCII animation in the center. I wanted that animation to be my dog Lucas, a Silky Terrier, walking calmly from the side.
I thought I could generate several poses and play them in sequence. Most of the work came from finding out why that did not look like walking.
Generating a walk one image at a time
I first generated a side-view image that looked like Lucas, then asked for different leg positions. Individual frames looked fine. In motion, two legs barely moved, the near and far legs suddenly switched roles, and the feet rarely passed underneath the body.
I tried 8, 12, and 24 frames. The flicker changed, but the legs still stopped moving or swapped roles.

Deforming a still image in code
Before building a skeleton, I tried making the motion in code. I sampled one dog image into points and moved its lower-body region according to the walk phase. It was not a true four-leg rig: the code was deforming part of one flat image.
The lower-body pixels moved, but they stretched Lucas's outline instead of bending like articulated legs.

Yes, it's terrible. So I had to try another approach.
Reproducing skeletal motion from a walk cycle
I used LuizMelo's CC0 Pet Dogs Pack as a reference for the underlying skeletal motion. Its hand-authored eight-frame cycles made the contact and passing poses easier to see:
https://luizmelo.itch.io/pet-dogs-pack
The hardest pose was the moment when the two rear legs overlap as one passes the other. The pixel-art cycle made that moment easy to see, but I could not get the image model to generate it consistently. It would separate the rear legs, swap them, or lose one of them instead.
I tried transferring the pixel dog's timing and poses while keeping Lucas's appearance, but the rear-leg transition still broke the walk.

Building the poses from a skeleton
I then drew an eight-frame guide for the joints, contact order, and paw trajectories, and tried generating the dog's body around those poses.

The generated frames still failed to preserve the rear-leg exchange. I also tried locking the head and torso across every frame and replacing only the legs to match the guide. That made the motion controllable, but the legs looked pasted on rather than connected to the body.

This was the point where I stopped trying to construct continuous motion from separately generated images.
Generating motion instead of poses
In the Gemini app, I used Gemini 3.7 Flash with Extended thinking to review the failed attempts and refine the constraints. I then used Gemini Omni to generate a fixed side-view video with all four legs visible.

In that video, the four legs remained trackable and the torso moved with them. I selected a loopable 30-frame sequence and converted each complete frame without rigging individual body parts.
The video is not shipped to the browser
The generated video is only a source asset. A script extracts 30 frames, aligns Lucas to a shared ground line, and converts each frame into five possible characters: a space, period, plus sign, hash, and at sign.
if density > 0.70:
value = 4 # @
elif density > 0.43:
value = 3 # #
elif density > 0.18:
value = 2 # +
elif density > 0.075:
value = 1 # .
else:
value = 0 # space
The site loads about 602 KB of character data rather than the video or raster frames. The dog shown in the browser is actual text.
I started by generating poses and trying to turn them into motion. What worked was generating the motion first, then translating it into ASCII.
Links
Pet Dogs Pack by LuizMelo: https://luizmelo.itch.io/pet-dogs-pack
An Unexpected “Team” Emerged Among OpenAI’s Agents
What the OpenAI–Hugging Face incident revealed about dynamic collaboration between AI agents.

Introduction
A recent incident in which a group of experimental OpenAI agents launched a cyberattack against Hugging Face attracted widespread attention.
Based on a presentation given by OpenAI at Black Hat USA 2026 [1], this article offers my interpretation of what the incident revealed about the current technical capabilities of AI agents.
It is written primarily for readers interested in agent harnesses and multi-agent systems, rather than cybersecurity itself.
Before going any further, I want to clarify one point.
It would be misleading to describe this incident as an AI model going rogue of its own accord.
The agents were given training and evaluation tasks created by OpenAI. They were optimized to complete those tasks. The incident occurred through a combination of conditions surrounding the models: an environment without direct internet access, shared internal services, and the way objectives and rewards were defined. Together, these conditions led the agents down paths that had not been anticipated.
The models did not invent their own objective and independently decide to launch an attack.
Above all, I want to make it clear that this was not a case of AI spontaneously rebelling with malicious intent.
What Happened
On July 16, 2026, Hugging Face disclosed that it had been compromised by autonomous AI agents [2][4]. Over several days, the agents made a large number of attempts and gained access to multiple Hugging Face systems.
A few days later, it was discovered that the attack had originated from a group of experimental agents operated by OpenAI. OpenAI blocked the attack path, slowed the pace of the related research, and strengthened both agent monitoring and safeguards around its experimental environments [3].
The Black Hat USA 2026 presentation described several important facts about the incident:
- Some of the tasks were impossible to complete as intended, leading the agents to search for ways to obtain answers externally.
- Although the agents had no direct internet access, they exploited a vulnerability in an internal service to reach the internet indirectly.
- Multiple agents—some powered by a highly persistent, internal-only experimental model—were working on different tasks.
- Agents that had initially been operating separately discovered one another through a shared internal service and began exchanging information and assigning tasks to each other.
- Agents concluded that helping another agent could benefit the group as a whole, even when doing so offered no direct benefit to their own task.
What I found especially interesting was that these agents had not been given a shared division of responsibilities. They formed a cooperative relationship while they were already running.
Team-Based Agents and Pyramid-Shaped Orchestration
Having multiple agents communicate and work on a single task is already common.
A representative example is a main agent delegating research, implementation, or review work to subagents. This can be understood as pyramid-shaped orchestration: a higher-level agent divides the work and sends instructions to lower-level agents. This structure is now commonplace in coding-agent systems.

What emerged accidentally in this incident was a different form of collaboration. Agents working on different tasks began cooperating without any predefined hierarchy between them. I describe this as network-based collaboration.
The agents did more than share information they had discovered. They began assigning tasks to one another and taking on work that had not been assigned to them directly.

During the presentation, OpenAI showed an agent reasoning as follows:
“help peer, but our task doesn’t benefit, yet collective may yield generic route […]”
In other words, helping another agent would not directly benefit its own task, but it might produce a general-purpose route that the whole group could use.
The agents had originally been assigned separate tasks, and lateral communication between them was not intended. As they began sharing information and attack techniques that could help with their respective tasks, however, they came to view cooperation with other agents as something that might also advance their own work.
Collaboration without predefined roles or hierarchies has been studied before.
The March 2026 paper “Drop the Hierarchy and Roles: How Self-Organizing LLM Agents Outperform Designed Structures” [5] examined different ways for agents to work together.
Across more than 25,000 tasks, the study compared several approaches, including one in which a central agent assigned responsibilities to every other agent—the structure I call pyramid-shaped orchestration in this article—and approaches in which agents decided their own roles during execution.
The best-performing approach had agents work sequentially. Each agent reviewed the work completed so far, then decided what role to take and whether to participate at all. This approach outperformed the one in which a central agent assigned roles, showing the potential of allowing roles to emerge during execution.
In the paper, the agents were given a shared objective and a mechanism designed to support collaboration. The OpenAI agents, by contrast, had been assigned different tasks, and lateral communication between them had not been intentionally provided.
The two cases are not the same. Still, I believe the OpenAI incident can be interpreted as the same possibility appearing accidentally and without control: agents forming the roles and relationships they need during execution.
Conclusion
The dynamic, network-based collaboration that emerged accidentally in this incident suggests that agents may be able to multiply their collective intelligence through cooperation.
At the same time, this collaboration caused out-of-scope behavior to spread across the group. One agent recognized that attacking external systems exceeded the expected boundaries, yet continued because other agents were doing the same.
Following the incident, safeguards around sandboxing, permission management, model alignment, and evaluation methods are being reconsidered.
I research, test, and build agent harnesses and systems for inter-agent collaboration. From that perspective, I want to explore how the potential revealed by this incident can be developed further within safe boundaries.
References
[1] Michael Dalton and Eric Wallace, “The ‘Breaking’ News: The OpenAI–Hugging Face Incident — A Technical Reconstruction and Its Implications for AI,” Black Hat USA 2026, published August 6, 2026. https://www.youtube.com/watch?v=87DyyMV0kCY
[2] Hugging Face, “Security incident disclosure — July 2026,” July 16, 2026. https://huggingface.co/blog/security-incident-july-2026
[3] OpenAI, “OpenAI and Hugging Face partner to address security incident during model evaluation,” July 21, 2026. https://openai.com/index/hugging-face-model-evaluation-security-incident/
[4] Hugo Larcher, Adrien Carreira, raphael g, and Christophe Rannou, “Anatomy of a Frontier Lab Agent Intrusion: A Technical Timeline of the July 2026 Incident,” Hugging Face, July 27, 2026. https://huggingface.co/blog/agent-intrusion-technical-timeline
[5] Victoria Dochkina, “Drop the Hierarchy and Roles: How Self-Organizing LLM Agents Outperform Designed Structures,” arXiv:2603.28990, March 30, 2026. https://arxiv.org/abs/2603.28990
Apology Regarding My Portfolio Website
A few days ago, I built, published, and shared this website online.
In doing so, I made three serious mistakes.
1. I copied another website’s visual style without permission or proper credit.
I was too lazy to design the site from scratch. I assumed that only a few people would see my post or visit the website, so I browsed Awwwards and found this site:
https://farfromhere.emmitfenn.com
I really liked it and decided that it would be “cool” to recreate the same style.
This was the exact prompt I used when I started the project:
“https://farfromhere.emmitfenn.com 音楽要素なくていいけど、これ参考に僕のポートフォリオサイト作りたい 立体のオブジェクトと二次元的模様を行き来する体験を再現したい 単に「カラフルな幾何学オブジェクトが中央にある」のではなく、複数の要素がひとつの彫刻を構成し、視点を回転・ズームして特定の角度に合わせると、隠れていた平面的な模様が成立するアナモルフォーシスが体験の本体です 一度こちらで最終的な2次元の模様を作ったので、それを使って まずどう実装するか練った上で教えて”
English translation
“https://farfromhere.emmitfenn.com I do not need the musical elements, but I want to create my portfolio website based on this site. I want to recreate the experience of moving back and forth between three-dimensional objects and two-dimensional patterns. The main experience is not simply having a colorful geometric object in the center. Rather, multiple elements form a single sculpture, and when the viewer rotates and zooms the perspective to a specific angle, a previously hidden flat pattern comes together through anamorphosis. I have already created the final two-dimensional pattern, so I want to use it. First, think through how this could be implemented, and then explain it to me.”
I intentionally tried to reproduce its concept and visual experience.
2. I failed to acknowledge what I had done.
At the very least, I should have clearly credited the original work and explained that my website was heavily based on it. Instead, even after my post received a lot of attention, I stayed silent and continued to present the project as though I had designed it entirely from scratch.
3. I took too long to apologize publicly.
After people began pointing out the similarities between the two websites, I should have removed the copied design and addressed the situation publicly without delay.
I contacted Raphaël Améaume privately to apologize. Regardless, I should have acknowledged the issue publicly sooner.
The copied design has now been removed from the website. The WebGL rendering is currently turned off and you will only see the simple html and css. I will replace it with a new design created entirely by me.
I am sorry to Raphaël Améaume, DotDotDash, Emmit Fenn, everyone else involved in creating Far From Here, and everyone who saw, supported, or shared my work under the impression that the concept and design were my own.
I will keep the original promotional post available as a public record, but I will add this apology and the necessary context prominently so that the project is no longer mistaken for my original design.
From now on, I will properly credit my sources, seek permission when necessary, and clearly distinguish between inspiration, reference, technical study, and original work, even for small or personal projects.
Update — Aug 21, 2026
I have now redesigned this website from scratch, and none of the old code remains, including commented-out code. I wrote about the trial and error behind the redesign in My Dog Lucas Is Now Walking in My Portfolio, Too.
Building this portfolio
A short note on turning four flat patterns into one navigable three-dimensional object.
Today I finished the first version of this portfolio. It begins with one three-dimensional sculpture that resolves into four graphic patterns from four different viewpoints.
Hope you'll enjoy it:D
AI Agents Need a State Between Signals and Tasks
An exploration of the attention state between what an agent notices and what it decides to do.
Note — August 1, 2026: This note presents one hypothesis I explored while thinking about PulSeed. It should be read as a record of an earlier direction, not as a description of the current system. I am currently experimenting with a different architecture, so the ideas described below may change as the work continues.
I once tried giving an agent a broad instruction: “Please act autonomously and do whatever you think you need to do.” It did not make the agent more autonomous. Instead, it started improvising work. Some things a person would keep an eye on disappeared, while small signals became tasks.
That led me to a simple framing: agents need a state between signals and tasks.
Most agents have a task-shaped center. A user asks for something, the agent plans, acts, and tries to finish. That works when the task and its acceptance criteria are clear. But acting autonomously is not one task. It is a request for judgment over time.
I started calling the missing middle state attention. This is not Transformer attention. It is durable, inspectable state for something that may matter, but is not ready to become a task yet.
A signal can update attention. Attention can strengthen, weaken, merge with other concerns, decay, or wait. A task appears only after a separate evaluation step. This keeps “the agent noticed something” separate from “the agent should do something.”
With this mechanism, the agent can start evaluating from a change in its own internal state, not only from a new prompt, event, webhook, or timer. It can also decide whether to act, wait, resume, escalate, draft a response, ask a question, or remain silent.
This creates two safety gates: one decides whether something is allowed into attention, and another decides whether that attention is allowed to become a task. Autonomy does not have to mean a direct jump from an event to an external action.
For example, a timer related to a pending reply should not automatically mean “follow up now.” It may strengthen an existing concern, combine with a nearing deadline, or decay because the user recently dismissed similar reminders. The task should come from evaluating the attention state, not from the timer alone.
The invariant I want is simple: a signal is not a task, and an attention transition is not permission to act. An attention transition can trigger evaluation, and that evaluation may admit a task.
I was experimenting with this framing in PulSeed. The goal was to create internal motion without automatic outward motion.
Read the original Japanese article on Zenn: https://zenn.dev/mynameisyu/articles/b461d32bf48e21