AB5D

KARMA

KALA · Project 414 · Presents

Art Blocks Presents, project 414 · 33 outputs · public mint 24 February 2023 · CC BY-NC 4.0

KARMA #16 by KALA, from the AB5D collection
KARMA #16 by KALA. Copyright: CC BY-NC 4.0. From the AB5D collection.
KARMA #20: a disc of grey and white ribbons and cubes on black, the only Circle composition

KARMA #20, the only Circle composition and the only Antaraya. Render: Art Blocks media proxy.

The work and its context

KARMA is project 414 on the Art Blocks contract 0x99a9b7c1116f9ceeb1652de04d5969cce509b069. The index records 33 invocations against a maximum of 33, the runtime p5@1.0.0, an aspect ratio of 0.707 (close to the A-series paper ratio) and the licence CC BY-NC 4.0. It files the project in the Presents vertical 1. Art Blocks now counts it among the Art Blocks 500, the set of projects released between 2020 and 2025 that the platform treats as "a finite and complete set" 23.

The project text opens: "Karma, the original algorithm of Indian thought." It goes on to say that "the past is only the fading imprint on memory" and that "The past's fading, thus, is a necessity" 1. The program makes that idea literal. Each output is a flock of rotating cubes and connecting threads that grows, swirls and then shrinks to nothing, leaving only the marks it has already laid down 1.

KALA is the working name of Ujjwal Agarwal, a generative artist and educator based in Bangalore. His own site lists Karma among his works under the handle @kalatalk, the same account the index gives as the project website 451. He studied at MNIT Jaipur and took an MA in Computational Arts at Goldsmiths, University of London 46. He teaches generative art at the Srishti Manipal Institute 7.

Conception and development

KARMA was KALA's second Art Blocks project. The first, Pizza 1o1, was a 200-edition Factory release of 1 March 2022, with the one-line description "You can't make everyone happy. You're not Pizza." 1. The index lists four later projects under the same artist address: TIMELINES (2023), Songs of Utopia (2025), "Unlived; Unliveable" (2025) and Raga.fm (2026) 1. Agarwal's site dates Karma to 2022, which suggests the work was made in the year before its January 2023 activation 51.

The project record credits two sources. The first is "Dan Shiffman's coding train version of the Boid's Flocking Algorithm", and the second is "colour tricks by Joshua Davis" 1. Shiffman's Coding Challenge 124 implements Craig Reynolds's boids, in which each agent steers by alignment, cohesion and separation with its neighbours 89. The KARMA program keeps that structure almost unchanged and builds its variation on top of it (code reading) 1.

Agarwal's project page describes the result as "a deterministic flocking system" whose agents "align, cohere, and separate according to forces derived from the transaction hash". It adds that "The system runs to completion, accumulating trails into an unrepeatable, individualized composition" 5. The artist's display note is short: "The piece is best experienced on large format prints" 1.

The trait names come from Jain philosophy. The "Act" trait uses seven of the eight main types of karma in Jain thought: Darshanavaraniya (perception-obscuring), Antaraya (obstacle-creating), Mohaniya (deluding), Naam (body-determining), Aayu (life-span), Gotra (status) and Vedaniya (feeling-producing) 101. The eighth, knowledge-obscuring Jnanavaraniya, does not appear in any published token 1.

How the work was constructed

The program is a single script of 11,561 bytes, SHA-256 f2a17d5392d53edcfc4792a18a3661da1ae9575c81a7f4f09f768647bf614e69. It was retrieved from the Art Blocks index on 20 September 2026 and read in full. No code is reproduced here 1. It runs in p5's WEBGL mode, with ambient and directional light, on a canvas 0.707 times the window height in width 1.

A seeded generator makes the first four draws: a mode number V from 0 to 90, a composition number, an origin number and a palette from ten 1. V picks one of seven parameter sets. Each set fixes the flock's "age", its number of boids, their maximum size, and the radius and weight of each of the three flocking forces. The published Act trait names the set. For this draft the generator was reproduced in JavaScript and run on all 33 hashes. The published Act, Art, Actors and Composition values match the program for every token (own computation) 1.

Act (published) V range and share Age drawn Boids ("Actors") drawn Tokens
Mohaniya 0 to 19, 22% 2 to 5 15 to 40 5
Antaraya 20 to 29, 11% 1 to 2 20 to 100 1
Vedaniya 30 to 39, 11% 1 to 2 20 to 80 6
Aayu 40 to 59, 22% 2 to 3 20 to 100 8
Naam 60 to 70, 12% 1 to 3 20 to 80 6
Gotra 70 to 79, 11% 1 to 2 20 to 40 2
Darshanavaraniya 80 to 90, 12% 1 to 2 20 to 50 5

Shares are the program's odds; token counts are from the index 1.

Each boid starts at a random point with a random heading, a random colour offset and a random size. On every frame each boid steers, moves and wraps round the edges of the canvas. It draws a thread to each neighbour between 10 and 200 units away, then draws a spinning cube at its own position 1. Thread weight and cube size both follow a half sine wave over the flock's lifetime of 380 frames times the age. Marks start at zero, swell, and shrink back to zero. After that the flock stops drawing, and the accumulated image is the work 1. At p5's default target of 60 frames a second, that lifetime runs from about six seconds (age 1) to about 32 seconds (age 5) (own computation).

The ten palettes are published as the "Art" trait. They are Attraction, Fire, Peace, Sky, Birth, Soft, Shine and Race, plus two two-colour palettes: Monochrome1 (black ground) and Monochrome2 (white ground) 1. Each palette is stretched into a 200-step looping gradient, and its first colour is the background. A cube's colour follows its horizontal position and the frame count, so hues shift across the canvas as the flock moves 1.

The "Composition" trait is Circle when the composition number exceeds 0.8 and V falls between 20 and 39. In that case, boids are held inside a disc instead of wrapping at the edges. The program's odds are about 4.4 per cent, and only #20 has it 1.

Quirks in the algorithm

A full reading of the program, checked against all 33 token records, found the following.

  1. A generator seeded from decimals. The random generator splits the hash into eight-character chunks and parses them without a hex radix. Each seed is therefore only the leading decimal digits of its chunk, and any chunk that begins with a letter becomes zero. That happened in 96 of the 264 chunks across the edition (own computation). In #13, all four seeds of the second stream are zero. The outputs are still distinct, but the effective seed space is far smaller than the hash implies (code reading) 1.
  2. The Age label is off by one in Mohaniya. The program draws Mohaniya ages from 2 to 5. The published Age is one higher than the program's value in four of the five Mohaniya tokens (#2, #7, #21, #31), and equal only where both read 5 (#3). The labels fit a draw from 3 to 5 1 (own computation). So #31, the only "Age 4", runs for the program's age 3, and #21, labelled 5, runs for age 4.
  3. Vedaniya boids never meet. In the Vedaniya set all three force radii are zero, so no boid ever counts a neighbour, and every boid flies straight until it wraps. Threads are still drawn between passing boids, but the flock has no behaviour at all. This makes "feeling-producing" karma the one mode without interaction (code reading) 1.
  4. A separation weight that does nothing. The Darshanavaraniya set gives separation its heaviest weight in the program, but gives it a radius of zero, so the force is never applied. What remains is weak cohesion across the whole canvas and short-range alignment (code reading) 1.
  5. An overlap at V = 70. The Naam set runs for V up to and including 70, and the Gotra set from 70. A token with V of 70 would run both, and Gotra's values would win. None of the 33 has V = 70 (own computation) 1.
  6. An origin that never happened. When the origin number exceeds 0.9 and V is 20 to 39, every boid starts at the centre. The chance is about 2 per cent, and all 33 tokens are published as "Origin: Random" 1.
  7. Dead code. The palette chain handles values up to 12, but only 0 to 9 can be drawn. A noise seed is set but noise is never used. Slider variables, a second flocking method and a spare drawing method are declared and never called. A save-to-file key handler is overridden by the later arrow-key handler, so it can never run (code reading) 1.
  8. Depth and resolution. Velocities have a depth component, and edge wrapping checks only width and height, so the flock drifts toward and away from the WEBGL camera. Thread weight is scaled by the resolution factor twice, so threads grow heavier relative to the image at larger sizes (code reading) 1.
  9. Clicks reach into the past. Clicking spawns up to ten new "K" boids at random positions that are drawn toward the pointer, but they only draw once the main flock has died. Each click also advances the token's generator, so an interactive session diverges from the stored hash's sequence (code reading) 1.

The most coveted variants

No published collector commentary, grail list or notable sale for KARMA was found. VERSE's series page, read through an automated extraction, reported a highest sale of $1,509 and total volume of $6,526, without naming the token 11. The index recorded a lowest listing of 2.28 ETH on 20 September 2026 1. What follows is therefore a description of structural rarity, not of market demand.

#20: Circle and Antaraya (1 of 33 each). The only Circle composition is also the only Antaraya token and has the largest flock, 83 boids. It is a pale grey disc of threads and cubes on black in Monochrome1 1. It is pictured at the head of this essay.

#16, the AB5D token. An Aayu flock of 66 boids, age 3, in Fire. Bands of red, orange and white threads run across the top and bottom, with tangled loops in between, on black. AB5D holds it 1.

KARMA #16: bands of red and orange threads above and below a tangle of loops on black

KARMA #16, Aayu, Fire, 66 actors. Held by AB5D. Render: Art Blocks media proxy.

#0, the artist's token. Minted on 24 January 2023, a month before the public sale, and still held by the artist's address 1. It is an Aayu flock of 37 boids in Soft, with violet bands on a pale pink ground.

KARMA #0: violet and pink horizontal strands on a pale pink ground

KARMA #0, held by the artist. Render: Art Blocks media proxy.

#31, the only "Age 4". A Mohaniya flock of 28 boids in Sky, with dense coils of pink and teal on cyan. As quirk 2 explains, its program age is 3, so its rarest label reflects a labelling offset 1.

KARMA #31: coiled pink, purple and teal ribbons on a bright cyan ground

KARMA #31, Mohaniya, Sky. Render: Art Blocks media proxy.

#21, the smallest flock. Only 16 boids, Mohaniya, in Race, one of two Race tokens. It leaves four separate knots of red and slate ribbons joined by a few long lines on off-white 112.

KARMA #21: four knots of coral and dark slate ribbons linked by thin lines on off-white

KARMA #21, Mohaniya, Race, 16 actors. Render: Art Blocks media proxy.

#32, the last mint. A Vedaniya flock of 67 boids in Monochrome1. As quirk 3 predicts, its boids travel in straight lines, and the image is a dense lattice of straight grey and white ribbons 1.

KARMA #32: a dense lattice of straight white and grey ribbons on black

KARMA #32, Vedaniya, Monochrome1. Render: Art Blocks media proxy.

At retrieval, 28 addresses held the 33 tokens, and no address held more than two 1. No source ties any of these addresses to a named collector or institution.

Drawing into the flock

The project text invites the viewer to draw: "Click/Hold anywhere to start drawing. Press the 'down arrow' to clear the canvas" 1. In the program, both actions wait until the main flock has died. Holding the mouse then sets a second flock moving toward the pointer, drawn with the same threads and cubes, and the down arrow paints the canvas with the background colour 1. A cleared canvas cannot be restored without reloading.

This fits the project text. The first image is the "past" laid down by the hash, and the viewer's own marks are added on top and can be erased. Only a reload restores the original, and the same program still produces it (code reading) 15.

The mint

Invocation 0 was minted on 24 January 2023 at 17:30:11 UTC, before the project was activated on 26 January 1. The sales notes describe a 24-hour allowlist "for 5 collectors who appreciated the light side of the pizza project", followed by "an exponential Dutch Auction with settlement from 12 ETH down to 0.24 ETH" 1. The index's minter records match. An allowlist minter priced at 0.3 ETH issued #1 and #2 on 23 February. The Dutch auction minter started at 12 ETH at 18:00 UTC on 24 February, with a price half-life of 319 seconds and a resting price of 0.24 ETH 1. On those figures the price reached 0.24 ETH about 30 minutes in (own computation).

The auction minter issued the other 30 tokens. Its recorded settled price is 0.24 ETH, so every auction buyer paid the resting price in the end, with any excess refundable 1. Twenty tokens were minted within the first hour after the auction began, 26 within 24 hours, and the last, #32, on 1 March 2023 1. The index gives a completion date of 12 March 2024, a year after the last mint. Nothing in the sources explains the gap 1.

The project record commits 10 per cent of "all proceeds above the base price" to Commutiny, The Youth Collective 1. Commutiny is a youth-work organisation headquartered in New Delhi 13.

The index records CC BY-NC 4.0 with a link to the Creative Commons licence 1. On that label, images of the work may be shared and adapted non-commercially with attribution; commercial use needs the artist's permission. The program carries no separate code licence, and the earlier AB5D essay treated the code's rights as unknown, a caution this draft keeps 14. p5.js is loaded by the platform at view time 1.

Significance and limitations

KARMA is a small, quiet project. It has 33 outputs, few sales and no critical literature. It is worth reading for how closely the program matches the text. Each flock grows, acts and fades by a fixed schedule, and only its marks remain. The Jain karma names are a real parameter switch, not decoration: each one sets how the flock behaves, and one of them, Vedaniya, removes behaviour altogether. The code also shows its origins as a teaching sketch, with an unused interface and a generator seeded from partly parsed hex. The published Age trait departs from the program in the Mohaniya branch 1.

The main limitations of this draft are the lack of any interview with the artist about the work and the lack of secondary-market data beyond one aggregator.

Unresolved research questions:

  1. Did KALA leave out Jnanavaraniya on purpose, or was it meant for the overlapping V = 70 case? The features script, not the on-chain program, would settle this.
  2. Why do the published Mohaniya ages run one higher than the program's? Was the features script written with a range of 3 to 5?
  3. Has KALA made any large-format prints of KARMA, as the display note suggests? Were any shown, for example alongside TIMELINES in India?
  4. How many allowlist places were used (the index shows two of five), and did any proceeds end up "above the base price" for the Commutiny pledge, given that the auction settled at its resting price?
  5. The VERSE market figures and the phrase on the legacy Pizza 1o1 page, that the name KALA means "tomorrow is made of art", came through automated extraction and are not confirmed. KALA's posts on X (@kalatalk) about the release are leads that could not be fetched.

Bibliography

Primary

  1. Art Blocks public GraphQL index, projects_metadata for project 414 (including the full program), tokens_metadata for all 33 tokens, project_minter_configurations, receipt_metadata and primary_purchases, and the artist's other project records. Retrieved 2026-09-20 via https://artblocks-mainnet.hasura.app/v1/graphql. Collection page: https://www.artblocks.io/collection/karma-by-kala 

  1. Art Blocks, KARMA by KALA project page. https://www.artblocks.io/collections/presents/projects/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414 

  1. Art Blocks, "Introducing Art Blocks 500". https://www.artblocks.io/articles/art-blocks-500-complete-collection 

  1. Ujjwal Agarwal, personal website, biography and works. https://www.ujjwalagarwal.com/ 

  1. Ujjwal Agarwal, "Karma". https://www.ujjwalagarwal.com/work/karma/ (see also "Raga.fm", which gives the same @kalatalk handle: https://www.ujjwalagarwal.com/work/raga-fm/) 

  1. Srishti Manipal Institute of Art, Design and Technology, faculty profile, "Ujjwal Agarwal". https://srishtimanipalinstitute.in/teaching_faculty/ujjwal-agarwal/ 

  1. AB5D, earlier essay on KARMA by KALA. https://ab5d.xyz/series/karma-by-kala/ 

Video and audio

  1. "Coding Challenge 124: Flocking Simulation", The Coding Train, YouTube (title and channel confirmed by YouTube oEmbed, 20 September 2026; not watched for this draft). https://www.youtube.com/watch?v=mhjuuHl6qHM 

Criticism, collecting and market

  1. Mediabrief, "India Art Fair 2023, Tezos India partner for Computational Art installation", 4 February 2023. https://mediabrief.com/india-art-fair-2023-tezos-india-partner-for-computational-art-installation/ 

  1. VERSE, "KARMA by KALA" series page, market data read 20 September 2026 by automated extraction. https://verse.works/series/karma-by-kala 

  1. VERSE, "KARMA #21 by KALA". https://verse.works/items/ethereum/0x99a9b7c1116f9ceeb1652de04d5969cce509b069/414000021 

  1. Commutiny, The Youth Collective, "About Us". https://commutiny.in/about-us 

Further reading

  1. The Coding Train, "Flocking Simulation", Coding Challenge 124. https://thecodingtrain.com/challenges/124-flocking-simulation/ 

  1. Wikipedia, "Types of Karma (Jainism)". https://en.wikipedia.org/wiki/Types_of_Karma_(Jainism) 

AB5D editorial synthesis of the supplied revision and earlier essay. Original prose: CC0. Artwork and code rights are addressed separately above.

Token usage unavailable for the complete essay.

Token usage

Usage for this supplied revision was not provided. The linked generation record describes the original research batch.

Generation record

· Source record · Essay data

Research record

The indexed project script was inspected. Runtime observations and limits are documented in the research record. Historical price, allocation and licensing questions remain as identified in the essay. Publication does not resolve those evidence gaps.

Retrieval evidence · Research notes · Manuscript