u/Fran4king

Those Colas were Painted.

Jump in Pija Update: Me confirman por la Chicharra que saltó en pija hasta P7. VAMOOOOO FRANCOOOO!!!

u/Fran4king — 10 days ago
▲ 6 r/vulkan+4 crossposts

A bit of personal context: I come from IT, and for about the last year I’ve been studying machine learning and data science on my own. I’m not coming from a formal biology lab background. I’m an autodidact trying to connect low-level computing, AI systems, complex systems, and some basic synthetic-cell/protocell ideas in a way that is measurable and honest.

I also have ADHD and severe depression, so part of the LifeForge side of this project is personal. I’m not trying to turn that into a medical claim. It’s more that I’ve spent a lot of time thinking about stability, damage, stress, repair, and homeostasis, and I wanted to build a small computational system where those ideas could be tested instead of only felt.

My long-term goal is to make the research open source once it is cleaned up enough and the claims are properly bounded. Right now I’m mostly trying to see whether this direction has any scientific value, and where the model is wrong.

I’m working on a computational project called VKRT LifeForge ProtoCell.

Important caveat upfront: this is computational only.
No wet lab validation. No real DNA. No real cells. No medical claims. I’m not claiming this is life.

I’m posting because I’d like technical feedback from people who think about synthetic cells, protocells, chemotaxis, minimal metabolism, or artificial-life models. Hope you like it, thanks.

What is VKRT?

VKRT is my own C++17 / Vulkan GPU runtime.

The broader project is a low-level compute/runtime stack for GPU experiments. It started around transformer/runtime work, but I also built a separate experimental branch called LifeForge for complex-systems and artificial-life simulations.

The simple version:

CPU = sets up the experiment
GPU = runs the parallel simulation
VKRT = my low-level runtime layer
LifeForge = experimental complex-systems lab
ProtoCell = one artificial protocell-like experiment

It currently runs on an AMD/RDNA2 setup.

What is ProtoCell?

ProtoCell is a small artificial-life simulation.

It has a 2D chemical world with fields like:

nutrient
toxin
waste
signal

Inside that world, simple agents move around. Each agent has internal state:

energy
damage
age
position
direction
short chemical memory
simple artificial genes
lineage id
reproduction state

Each step is roughly:

sense → memory → action → movement → metabolism → damage/repair → divide/die

This is not meant to be a biological cell model. It is more like a minimal computational protocell benchmark.

The main question is:

Can a simple artificial agent maintain internal stability under chemical pressure?

In physiology terms, I’m trying to measure a basic form of bounded homeostasis.

Why I’m testing this

A lot of artificial-life work is visually interesting, but I wanted something a bit more boring and measurable.

The questions I’m trying to isolate are:

Does sensing help survival?
Does memory matter?
Does a spatial gradient matter?
Does internal metabolic state matter?
Can the agent keep damage low?
Can it reproduce without final population becoming a misleading metric?

The goal is not to claim “life in software.”

The goal is to build a reproducible testbed for minimal mechanisms:

sensorimotor coupling
bounded homeostasis
damage avoidance
reproduction under constraints
simple artificial adaptation

First control sweep: blind vs random vs sensor

The first useful experiment compared three modes:

blind  = no useful environmental sensing
random = random behavior
sensor = samples local nutrient/toxin information

The long-run cohort used 100,000 steps, with an initial population of 256 and a capacity of 1024.

Main result:

blind → extinction
random → reaches capacity, but with low homeostasis and higher damage
sensor → reaches capacity with better homeostasis, lower damage, and more successful births

The important point is that final population stopped being useful. Both random and sensor can hit the population cap.

So I started tracking:

successful births
birth pressure
dropped births
damage
homeostasis
population saturation

02_v023_homeostasis_damage.png]

https://preview.redd.it/fy4kr50orsxg1.png?width=2141&format=png&auto=webp&s=e7e5eb74de8e92252b7fe284385b49fab54af7f5

Caption: Control sweep: sensor improves homeostasis and lowers damage compared with random. Blind is the negative control.

03_v023_successful_births.png]

https://preview.redd.it/41bwngpmrsxg1.png?width=2141&format=png&auto=webp&s=89982f576cb02d01a864e86e158ddab0ede0411c

Caption: Successful births per 1,000 steps. This separates sensor from random better than final population.

v0.3a: causal ablation

After that, I added a causal ablation matrix.

Instead of only asking “does sensor beat random?”, I wanted to ask why it works.

Current modes include:

blind
random
no_toxin
sensor_full
sensor_spatial
sensor_temporal
sensor_metabolic
sensor_no_memory
sensor_shuffled_memory
sensor_no_gradient
sensor_fixed_genome

The result was useful because it did not simply confirm my expectation.

sensor_full beats random clearly in the current diagnostic run:

random:
  final population = 1024
  successful births / 1000 = 612.1
  homeostasis = 0.1367
  damage = 0.5023

sensor_full:
  final population = 1024
  successful births / 1000 = 1025.0
  homeostasis = 0.4482
  damage = 0.2218

But sensor_spatial did even better under the current static-field setup:

sensor_spatial:
  final population = 1024
  successful births / 1000 = 1338.6
  homeostasis = 0.5508
  damage = 0.2119

And sensor_shuffled_memory also performed unexpectedly well:

sensor_shuffled_memory:
  final population = 1024
  successful births / 1000 = 1296.9
  homeostasis = 0.6016
  damage = 0.2135

That is probably the most interesting result so far.

It may mean:

1. the current static environment favors simple spatial gradient response;
2. temporal memory is not being tested under the right conditions yet;
3. noisy memory may be acting like useful exploration;
4. the shuffled-memory control may need to be redesigned;
5. a moving-gradient environment is needed next.

The negative result was also useful:

sensor_metabolic:
  final population = 0
  successful births / 1000 = 16.2
  homeostasis = 0

So internal metabolic state alone is not enough in this setup. It probably needs to modulate sensing, not replace it.

04_v03a_homeostasis_weighted.png]

https://preview.redd.it/0xidu3vkrsxg1.png?width=2501&format=png&auto=webp&s=3837c8825aeddef1b906d02db20588a626b92e1d

Caption: Ablation result: raw homeostasis can be misleading if only a few agents survive. The weighted metric penalizes near-collapse.

05_v03a_successful_births.png]

https://preview.redd.it/crr3dr7jrsxg1.png?width=2500&format=png&auto=webp&s=455b4d6f1214c791f17df7bd92030e28b59162ec

Caption: Ablation result: spatial sensing currently dominates in the static field. The shuffled-memory result is interesting and needs better controls.

What I think this supports

Small, bounded claims only:

blind extinction is a useful negative control
sensor modes outperform random on homeostasis/damage
successful births are more informative than raw birth pressure
final population is not a good metric once capacity saturates
spatial sensing is currently the cleanest signal
the ablation matrix is useful for finding false assumptions

What I am not claiming

not life creation
not real DNA
not biological accuracy
not medical relevance
not open-ended evolution
not general chemotaxis
not true metabolism yet

Next experiment

The next step should be a dynamic environment.

Right now, spatial sensing performs best. That makes sense if the field is mostly static.

The next test should use:

moving nutrient patches
toxin pulses
gradient reversal
recovery-time metrics

The question becomes:

Does memory matter when the environment changes?

If temporal sensing is meaningful, it should show up there.

After that, I want to add a minimal metabolic closure layer:

nutrient uptake
waste deposition
field delta buffers
mass/energy ledger
membrane-like protection field

That would move the model closer to protocell-like behavior instead of just agents moving through a chemical field.

Compact results tables:

```text

LifeForge ProtoCell v0.2.3 — control cohort, 100k steps, n=3 seeds

| mode | final_pop | homeostasis | damage | births/1k | interpretation |

|--------|-----------|-------------|--------|-----------|----------------------------------------|

| blind | 0 | 0.000 | 0.000 | 0.0 | extinct control |

| random | 1024 | 0.097 | 0.287 | 263.5 | survives; low homeostasis/high damage |

| sensor | 1024 | 0.409 | 0.216 | 812.6 | sensor advantage |

Key deltas:

| comparison | metric | value |

|-----------------|----------------------------|--------|

| sensor - random | homeostasis | +0.312 |

| sensor - random | damage | -0.071 |

| sensor / random | successful_births_per_1000 | 3.08x |

```

```text

LifeForge ProtoCell v0.3a — exploratory ablation, 10k steps, n=1 seed

| mode | final/cap | raw_H | viab_H | damage | births/1k | interpretation |

|------------------------|-----------|-------|--------|--------|-----------|----------------------------------------|

| random | 1024/1024 | 0.137 | 0.137 | 0.502 | 612.1 | baseline: alive but damaged |

| sensor_full | 1024/1024 | 0.448 | 0.448 | 0.222 | 1025.0 | beats random; not best |

| sensor_spatial | 1024/1024 | 0.551 | 0.551 | 0.212 | 1338.6 | best clean sensor mode |

| sensor_shuffled_memory | 1024/1024 | 0.602 | 0.602 | 0.213 | 1296.9 | too strong; noise/control issue |

| sensor_no_memory | 18/1024 | 0.722 | 0.013 | 0.170 | 81.0 | survivorship bias; population collapse |

| sensor_metabolic | 0/1024 | 0.000 | 0.000 | 0.000 | 16.2 | metabolic-only fails |

Key deltas:

| comparison | metric | value |

|-------------------------------|----------------------------|--------|

| sensor_full - random | homeostasis | +0.312 |

| sensor_full - random | damage | -0.280 |

| sensor_full - random | successful_births_per_1000 | +412.9 |

| sensor_spatial - sensor_full | homeostasis | +0.103 |

| shuffled_memory - sensor_full | homeostasis | +0.153 |

```

Notes:

- viab_H = homeostasis * final_population / capacity

- v0.2.3 has stronger statistical footing than v0.3a because it uses 3 seeds and 100k steps.

- v0.3a is exploratory: it exposes mechanisms and design issues, not final claims.

- action_structure_proxy_not_true_mi remains a proxy, not real mutual information.

*************************************************************************************************

What I’m looking for

I’d appreciate criticism on the framing and controls.

Specific questions:

  1. Does this make sense as a computational protocell / synthetic-cell-adjacent benchmark?
  2. What is the most important biological abstraction to add next?
    • membrane/permeability?
    • explicit fuel or ATP proxy?
    • waste feedback?
    • pH/redox proxy?
    • quorum-like signal?
    • transport channels?
  3. For people familiar with chemotaxis: does the spatial-vs-temporal result sound expected in a static field?
  4. What controls would you want before taking the homeostasis result seriously?
  5. Any papers you would recommend on minimal metabolism-based chemotaxis, protocell homeostasis, or computational synthetic cells?

I’m not trying to sell anything. I’m trying to find out whether this is a useful experimental direction before making the model more biological. Thanks for reading.

*************************************************************************************************

VKRT LifeForge — GPU-native runtime science lab / AMD + Vulkan / planned Open-source - - Free - Love for Science AMD+Vulkan.

*************************************************************************************************

reddit.com
u/Fran4king — 16 days ago