This experiment is an attempt to implement the routing part of the
Silktorrent Specification Version 1.0 and its sub-specification, the
Agents are operating system users that have their $HOME mounted to RAM file system. The $HOME of an agent is cleared at the end of every session by a special cleaner agent. At startup an agent might not be initialized from scratch, but it might be loaded from RAM-disk by reading in Ruby VM dump (the Marshal module). Agent-god is an agent that kills and creates agents. A killed agent is a zombie-agent that exists among operating system users, but it does not have any processes running, its crontab is empty, its home folder is empty, it does not own any files in the /tmp.
Persistence (database, file storage, etc.) is handled by an agent that generates a randomly generated access password pair and gives the cleartext of one of the pair members (cleartext) only to the agent-god and it does it only once per password pair. Agent-god gets the persistence agent access password, creates a new code-running agent, gives the persistence agent access password to the code-running agent only once and if the code-running agent asks the password twice, the agent-god kills the code-running agent, cleans its home folder, logs the incident. The idea is that if the code-running agent is allowed to ask the persistence agent's access password only once, then either only the trusted part of the code-running agent code gets it or the agent gets killed, when the trusted part of the code-running agent asks for it.
If the untrusted code region of the code-running agent asks the password first, then it gets the password, asks the persistence agent for the second member of the password pair and has access to the data that it should not have. A workaround to that problem might be that the code-running agent is started by giving the access key as a console parameter and have the trusted part of the code-running agent ask the persistence agent for the second member of the password pair before the untrusted/unverified/third-party code is dynamically loaded.
The trusted part of the code-running agents, their boot-up, and the
Agent-god and the persistence agent communication module should be written in
ParaSail. Gateways to the internet, hardware, essentially singletons, have
the same agent interface as the persistence agents have. The routing
calculation ParaSail code is a separate module, which might be linked with the
persistence agent's agent interface. The agent interface code will be the
integration code of the Babel software architecture. There will be one
agent-god per application and multiple agent-gods per computer, a bit like the
Greek had a lot of different gods.