Getting Started

Virgo is split into a core component and a derived project. This allows for better code reuse. The core component is located in the virgo-agent-toolkit/virgo-base-agent repository.


Compiling Hello World Agent on Linux/OSX

In this derived project example, we are going to start out with the most basic agent: Hello World. Virgo expects to find an ‘init.lua’ file and a function called ‘run’ exported from Lua. Start by running the following commands.

git clone
cd virgo-example-agent
git submodule update --init --recursive

If everything has built correctly try running.



Virgo and Luvit modules closely resemble Node.JS modules. Typically there is an exports table that is returned from the module.

local exports = {}

-- Main entry = function()
  print('Hello World')

return exports


Please remember that everything in Lua is defaulted to the global namespace. The Lua keyword local is needed for practically every variable or function declaration.


This file in the project adds files to a zip file embedded within the executable. You start out with one file:


You can add more files to this list and use any subdirectory layout that you like.