Right now we have over 15,000 clients and over 900 active servers worldwide. The servers are screensavers themslves, so they are not always active. If you havent done so already, please join our mailing list.
The Golem@Home project is similar to Berkeley's SETI@Home (search for extra-terrestrial life) in that it harnesses idle CPU across the Internet to perform massively distributed computation using screen savers. In an interesting way, both projects are searching for other forms of life - one in outer space and the other in the virtual world ("Artificial Life").
But the two projects differ in architecture: While SETI has a centralized server that distributes raw data to clients and collects processed data, the Golem project is decentralized. It models isolated pools of evolution with sparse interaction. Once you start running the screen-saver, it needs no data - its starts from scratch. It will contact the main Golem server only to get a few IP addresses of other screensaver, and then will communicate with them directly and sparsely (say, once in a week or two) to allow single creatures to migrate. It will gradually learn about other servers available and determine which of them are close and reliable. So it is not important if your Golem screensaver cannot establish contact right away, or even if it rarely is online. It only needs occasional access, and will hardly ever contact the central Golem server after the first time.
The central Golem server does not collect results. We rely on the fact that 'good' creatures will survive long enough that they will eventually reach us by migration. But still, if you notice an exceptionally interesting creature, we ask that you let us know.
Once in a while (say, once in one or two weeks), the computer will randomly select 1-3 creatures out of its population and migrate them to another screensaver with which it has established connections. Any creature out of the current population might be selected. The migrating creatures will leave copies of themselves on the source machine, and will replace randomly chosen individuals on the target machines. You cannot influence this migration process, but it will not occur if either the source or target populations are very young (less than 72 CPU hours old).
The Golem@Home project is new (started in the summer of 2000), and still under development. We are working to improve the process, make it more reliable, solve bugs, and address the incoming flux of feature wish lists. In particular, we're trying to understand the dynamics of the computation. Please bear with us and check for new revisions.
Right now we have over 15,000 clients and over 900 active servers worldwide. The servers are screensavers themslves, so they are not always active.
We tried very hard to maintain security and privacy. Here are the key points:
We are not currently developing for alternative platforms, but we might consider this as the project expands.
We are working on a solution for proxies and firewalls. But as mentioned above, it is not immediately critical that your screensaver is able to communicate with the central server or anybody else around the world. You might want to use the advanced settings to key in IP addresses of some other Golems on your local area network, so that they can join forces. When we release a proxy/firewall version, then your creatures will also be able to migrate out to the world.
We are not currently releasing source code for this project; we might consider doing so only for research collaboration with other academic institutes.
E-mail us a creature when it is interesting: This can be either that it has a particularly high fitness (say, above 1.0, and you haven't sent anything like it before), or when it locomotes in an interesting way, for example if it lifts itself off the ground as in bipedal or quadrapedal locomotion. Don't send us those that look like they're moving "illegally" (e.g. sliding on the floor). When you find one, flip through the population and use "Save Individual" to generate an "ltf" file, and e-mail that to us as an attachment. In the body of the e-mail, briefly state the fitness and a description of how it moves.
It might be that there is a lot of web traffic, that there is some proxy/firewall problem or some other bug. As mentioned above, it is not immediately critical that you establish contact. Golem will automatically try again later, but check out for new revisions anyway.
LiveTruss, the standalone version of the Golem, is not intended to run "in the background". You might use it to examine populations evolved by the screensaver, or just to replicate results we showed in the paper.
Golem is only intended for use as a screen saver. We do not yet have a version that runs "in the background". We might develop one later.
This project is written in Visual C++ for Windows. It uses OpenGL for the graphics and Winsock for communications.
Try downloading these libraries from Microsoft.com. Best to
just to do a "Windows Update" from http://windowsupdate.microsoft.com/.
You might also need to update your SHLWAPI.DLL, but windows update
should take care of all of that. If you are runing Win95/OSR1,
you can get the OpenGL file for that version from Microsoft, at
Try downloading an updated version of Wininet32.dll for your operating system. Best to just to do a "Windows Update" from http://windowsupdate.microsoft.com/. You might also need to update your SHLWAPI.DLL, but windows update should take care of all of that.
The color have no functionality, but they are inherited from parent to child. So if two creatures have similar body parts with similar colors, it is likely they are descendants of a common ancestor - the more similar they look, the more recent that ancestor.
Generally, we will add more complexity to the substrate and environment. But we want to keep things simple so that we might understand why and how things happen. In particular, we are working on interaction between robots because we believe that is key in obtaining complexity.
An individual creature is stored in an ".ltf" file (stand fore Life Truss File). An entire population of robots are stored in an ".evo" file. You can load a population through the population/load command.
Golem uses ports 23049 and 23051.
Check for new releases that might contain fixes. Also, you might try installing on another machine just to make sure its not some particular feature of your computer. Explain details and circumstances; in particular, under what circumstances can you repeat the crash? We have seen some problems with particular hardware configuration or locally adapted windows versions.
There is no such page yet, but once it picks up we will make one to provide daily updates.
The current version does not generate physical machines. If you want one, you can send us the file and we might generate the STL file for you. If you have a rapid-prototyping machines, you can use the STL file to print your own robots. You can also download the STL file for some of the exiting robots. If you don't have your own 3D printer, and you are very rich, you might ask a rapid prototyping service bureau to print the STL file for you (~$1500). In any case, you will have to decide if you want a static machine, a machine that has the degrees of freedom but no actuators, or one with accommodations for real actuators.
You can generate your own landscape by generating a binary STL file containing the tessellation of the terrain. To generate an STL file, use any CAD package, or generate the file directly according to the format specifications. Then, import the STL file as the landscape. Alternatively, you can generate a terrain by importing an image (then the height of the terrain will be proportionate to the intensity of the image), or import a text file where each line contains three points (nine coordinates) of a triangular facet of the mesh.
There is no help file yet, but check for updates soon, and read through this faq.
You need to save the population using population/save. This creates an "evo" file. Next time, load the population using population/load, and select "continue evolving".
No, LiveTruss creates checkpoint files according to the date, every half hour or so. You can load that checkpoint file (they come in pairs; chose the most recent one).
You can use LiveTruss to load the ".evo" file, then select commands under evolve/population or evolve/history to get some idea of what went on.
Yes, look under start/settings/control-pannel/add-remove-programs, and select "Golem".
A good fitness is around 1.0 or higher.
Anything between a few hours to a few days. Depends on speed of your processors and luck.
Be patient, or try resetting the population. That helps sometimes.
LiveTrus does make use of multiple processors, but the current version of Golem does not.
LiveTruss does not waste CPU on animation, but Golem does. To view the creatures, stop the evolution and flip through the population.
For an image, orient the creature so that it looks nice on the screen. Use view/snapshot to copy the picture to the clipboard, and you can then paste it into any other program like MS-Word or Adobe Photoshop.
To make a movie, resize the window until it is small (or else your video file will be huge). Orient the creature so that it looks nice on the screen. Simulate it once (ctrl-s) to see how it moves. Then seect view/start-recording and select some format that has compression (like Cinepack by Radius). Now press ctrl-s to simulate again. Every frame is recorded, and a beep made, so things might be a bit slow. You can zoom in or out or change the viewpoint while the movie is being recorded. You can halt the simulation early by pressing Escape. When you are done, select "Stop Recording". The video will be called "LiveTruss.avi".
If you post the image or movie on the web or publish it anywhere, please acknowledge our project and give a link to it.
Yes, if you havent done so already, please join our mailing list.
Copyright (c) 2000
Lipson & Pollack