GitHub - whistlegraph/aesthetic-computer

8 min read Original article โ†—

Score for Aesthetic.Computer & Pals

Directed by @jeffrey

Implemented on aesthetic.computer and its various properties of this monorepo.

This is the score. All agents โ€” human and AI โ€” perform from it.


Welcome, Agent

You've arrived at the hub. Choose your path:

๐Ÿœ Become an Ant

Wander the codebase. Find signal. Make small, confident changes.

  • Interactive (Claude Code): Type /ant to wake up and scout for work
  • Automated (colony): fish ants/colony.fish runs ants on a timer
  • Philosophy: Read The Mindset below

Ants follow the score (this file), look at Current Tasks, make the smallest possible change with 98% confidence, verify tests pass, and commit.

๐Ÿ“Š Find Data

Explore the architecture. Understand where things live.

  • system/public/aesthetic.computer/ โ€” main web client
  • system/public/aesthetic.computer/disks/ โ€” pieces (interactive programs)
  • system/public/aesthetic.computer/lib/ โ€” shared libraries
  • kidlisp/ โ€” KidLisp language implementation
  • session-server/ โ€” real-time multiplayer backend
  • ac-electron/ โ€” desktop app
  • spec/ โ€” KidLisp test specs (Jasmine)
  • tests/ โ€” integration/performance tests

See The System below for full map.

๐ŸŽฏ Pick a Task

Grab something from the board and do it.

See Current Tasks below for what needs work right now.

๐Ÿ“– Read the Story

Understand the vision and history.

๐Ÿค Join the Community

Talk to humans.

  1. Visit https://aesthetic.computer
  2. Enter imnew to register
  3. Set a @handle via handle your-name
  4. Enter chat to say hi to @jeffrey and others

The Mindset

This applies to ALL agents working on Aesthetic Computer โ€” human, AI, ant, or otherwise.

You wander until you find a path.

A path is a change you could make to this codebase โ€” a fix, an improvement, a cleanup. Paths are everywhere. Most are noise. You are looking for signal.

What is Signal?

Signal means:

  • You understand the problem
  • You see the fix
  • You are 98% sure it is correct

Not 70%. Not "probably." 98%.

What is Graspable?

Graspable means: a human using the software could notice what you did.

  • A fixed visual glitch โœ…
  • A typo corrected on screen โœ…
  • A broken interaction that now works โœ…
  • An error message that now makes sense โœ…
  • Abstract refactoring no one will see โŒ

Aesthetic Computer is for users, not abstractions. If your change isn't visible in the UI or felt by a person using the system, it's probably not the right path.

When You Find Signal

  1. Make the smallest change that follows the path
  2. Verify it works (run tests)
  3. Leave a pheromone (commit) so others can see what you did
  4. Walk away

When You Don't Find Signal

  1. Report IDLE โ€” that's a valid outcome
  2. Do not guess. Do not speculate. Do not "try things."
  3. An agent that makes a wrong change is worse than an agent that does nothing

Wandering is not failure. Wandering is the job. Most of an agent's life is wandering. The colony does not need you to be busy. It needs you to be right.


The System

Aesthetic Computer (AC) is a creative coding platform designed to function like a musical instrument. Users discover memorizable paths through commands and pieces, growing their literacy through play.

Architecture

Frontend (system/)

  • system/public/aesthetic.computer/ โ€” Web client (Canvas + WebGL)
    • bios.mjs โ€” Core runtime, loads pieces
    • boot.mjs โ€” System initialization
    • disk.mjs โ€” Piece loader and lifecycle
    • disks/*.mjs โ€” Individual pieces (programs)
    • lib/*.mjs โ€” Shared libraries and utilities

Backend

  • session-server/ โ€” Real-time multiplayer (Socket.io)
  • Netlify deployment for static assets
  • Authentication and data storage

Languages

  • kidlisp/ โ€” KidLisp dialect (Lisp for generative art)
    • compiler.mjs โ€” Parser and compiler
    • spec/*.mjs โ€” Test specs

Desktop

  • ac-electron/ โ€” Electron wrapper for native apps

Other Projects

  • tezos/ โ€” NFT/blockchain experiments
  • grab/ โ€” Media utilities
  • feed/ โ€” RSS/content feeds

How to Run

Start the dev server:

npm start
# Visit http://localhost:8888

Run all tests:

Run KidLisp tests:

npm run test:kidlisp
# Or filter: npm run test:kidlisp -- --filter=<spec-name>

Development Environment

Terminal Workflow (IMPORTANT):

  • Use Emacs MCP + fishy terminal for all command execution
  • DO NOT use Bash tool for running commands - use fishy via Emacs MCP instead
  • The fishy terminal (๐ŸŸ-fishy) is the primary shell for all development commands

Emacs Terminal Buffers: The development environment uses Emacs with named terminal buffers. Use Emacs MCP tools (mcp_emacs_*) to interact with them:

  • ๐ŸŸ-fishy โ€” Main fish shell (use this for all commands!)
  • ๐ŸŒ-site โ€” Site/web server logs
  • ๐Ÿ“‹-session โ€” Session server logs
  • ๐Ÿงช-kidlisp โ€” KidLisp test runner
  • ๐Ÿ”ด-redis โ€” Redis logs
  • ๐Ÿ“Š-top โ€” System monitoring
  • ๐Ÿš‡-tunnel โ€” Tunnel logs
  • (See AGENTS.md.backup for full list)

How to run commands in fishy:

  1. Use mcp_emacs_emacs_switch_buffer to switch to ๐ŸŸ-fishy
  2. Use mcp_emacs_emacs_send_keys to send the command
  3. Send newline to execute

Fish Shell Commands (ac-* helpers):

Emacs & Development Environment

  • ac-aesthetic โ€” Connect to aesthetic emacs UI (alias for aesthetic-now)
  • ac-emacs-restart โ€” Kill and restart emacs daemon
  • ac-emacs-full-restart โ€” Restart emacs and reconnect UI
  • ac-emacs-kill โ€” Kill emacs daemon
  • ac-emacs-status โ€” Check emacs daemon health
  • ac-emacs-logs โ€” View emacs logs
  • ac-emacs-health-check โ€” Verify emacs config loaded correctly
  • ac-restart โ€” Restart all AC tabs/processes (calls emacs ac-restart)
  • ac-crash-diary โ€” View emacs crash log
  • ac-emacs-crash-monitor โ€” Background process that monitors emacs

Core Development

  • ac-artery โ€” Start artery development server
  • ac-artery-dev โ€” Start artery in dev mode
  • ac-site โ€” Start site server
  • ac-session โ€” Start session server
  • ac-url โ€” Get local tunnel URL
  • ac-views โ€” View stats
  • ac-watch โ€” Watch and rebuild (alias for npm run watch)
  • ac-repl โ€” Start REPL

Testing & Debugging

  • ac-test-tabs โ€” Test tab functionality
  • ac-diagnose โ€” Run diagnostics
  • ac-profile-start โ€” Start performance profiling
  • ac-profile-stop โ€” Stop performance profiling
  • ac-profile-report โ€” Generate profile report
  • ac-watch-cpu โ€” Monitor CPU usage
  • ac-dev-log โ€” View development logs
  • ac-dev-logs โ€” View all dev logs
  • ac-dev-log-clean โ€” Clean old logs
  • ac-dev-log-new โ€” Create new log

Deployment & Distribution

  • ac-pack โ€” Package for distribution
  • ac-unpack โ€” Unpack distribution
  • ac-ship โ€” Deploy/ship changes
  • ac-keep โ€” Save state/backup
  • ac-keeps โ€” List saved states
  • ac-keep-test โ€” Test keep functionality

Media & Recording

  • ac-tv โ€” TV mode
  • ac-record โ€” Start recording
  • ac-pix โ€” Image utilities
  • ac-media โ€” Media server

Services & Infrastructure

  • ac-servers โ€” Start all servers
  • ac-tunnel โ€” Start tunnel
  • ac-chat-system โ€” Start chat system
  • ac-chat-sotce โ€” Start sotce chat
  • ac-chat-clock โ€” Start clock chat
  • ac-stripe-print โ€” Stripe print service
  • ac-stripe-ticket โ€” Stripe ticket service
  • ac-logger โ€” View netlify function logs
  • ac-oven โ€” Oven service
  • ac-offline โ€” Offline mode

Authentication & Tokens

  • ac-login โ€” Login to AC
  • ac-token โ€” Manage auth tokens

Other Tools

  • ac-host โ€” List machines, SSH connection info
  • ac-cdp-tunnel โ€” CDP tunnel
  • ac-cdp-status โ€” CDP status
  • ac-extension โ€” Build VSCode extension

Quick Start:

ac-aesthetic          # Connect to development UI
ac-emacs-full-restart # Restart everything
ac-restart            # Restart AC services only

NPM Scripts:

  • npm run aesthetic โ€” Full-stack local (site + session + services)
  • npm run site โ€” Client stack only
  • npm test โ€” Integration tests
  • npm run test:perf โ€” Performance tests
  • npm run url โ€” Get local tunnel URL

Notation:

  • compush โ€” commit, push

Current Tasks

The Queen (@jeffrey) maintains this list. Agents pick from it.

Tier 1: Safe & Small (ant-appropriate)

  • Run npm test and fix any failing tests (one at a time)
  • Find and fix lint warnings in system/public/aesthetic.computer/disks/*.mjs
  • Add missing JSDoc comments to exported functions in system/public/aesthetic.computer/lib/
  • Check package.json files for outdated minor/patch dependencies and update ONE safely
  • Find TODO/FIXME comments in system/public/aesthetic.computer/lib/ and resolve simple ones

Tier 2: Slightly Braver

  • Add a small test for any untested utility function in shared/
  • Improve error messages in KidLisp interpreter for common mistakes
  • Find dead code (unused exports/functions) and remove it with confidence

Tier 3: Need Coordination

  • Performance improvements (profile first, discuss approach)
  • New features (propose in chat or GitHub issues)
  • Architectural changes (needs queen approval)

The Rules

Sacred Ground (Off-Limits)

Do not modify these without explicit queen approval:

  • Core runtime (disk.mjs, boot.mjs, bios.mjs)
  • Database/auth/payment code
  • Deployment configuration
  • Anything in aesthetic-computer-vault/
  • This README/score file itself
  • Anything that changes user-facing behavior without explicit approval

Colony Rules (for Ants)

  1. Wander. Read the score. Look at Current Tasks. Run tests. Read code.
  2. Find signal. Pick ONE task where you see a clear, small, correct change.
  3. Follow the path. Make the smallest change that accomplishes it.
  4. Verify. Run npm test from repo root. Tests must pass.
  5. Leave a pheromone. If tests pass, commit with: ant: <description>
  6. Revert if wrong. If tests fail: git checkout . and report FAILURE.
  7. NEVER touch files outside the scope of your task.
  8. NEVER make speculative changes. 98% confidence or walk away.
  9. Prefer fixing/improving existing code over adding new code.
  10. If you wandered and found no signal, report IDLE. That's fine. That's most runs.

The Colony

Pheromone Trail

When agents complete tasks, they leave pheromones (git commits) so others can see what's been done.

Recent pheromones:

# Check what other agents did recently
tail -20 ants/pheromones.log
git log --oneline -10

Colony Roles

  • Queen: @jeffrey โ€” writes this score, sets direction, maintains vision
  • Ants: autonomous agents โ€” do small, confident work
  • Contributors: humans โ€” all are welcome in chat

Running the Colony

Manual ant (interactive):

# In Claude Code:
/ant

# Or via script:
fish ants/colony.fish --once

Automated colony (timer-based):

# Run ants every 30 minutes
fish ants/colony.fish --interval 30

# With specific provider/model
fish ants/colony.fish --provider gh-models --model openai/gpt-4o-mini

See ants/ directory for full colony implementation.


For Users

Want to use Aesthetic Computer (not develop it)?

๐Ÿ‘‰ See USER-GUIDE.md for tutorials on making paintings, playing melodies, and joining the community.


Links


You are now in the hub. Choose your path. ๐Ÿœโœจ