Survol is Primhill Computer's Software Intelligence tool to analyze and investigate running applications. Survol is a Python agent and a web interface aiming to help understand an existing information system and legacy applications.

Survol Survol works on machines, processes, databases, programs etc .... all communicating with each other, manipulating your data, and whose software architecture has become, with time, complicated, difficult to understand, and undocumented.

Who is it made for ?

Survol is designed for two classes of users:

  • Managers and Team Leaders, in charge of software projects, who must  follow development tasks, infrastructure evolutions, by looking directly into what's being developed. They need a non-technical tool, to extract information from a running application at a synthetic level.
  • Developers and Consultants, newly-comers on legacy software, who must grasp quickly an existing information system, using many, too many technologies.

These users have something in common: they must quickly comprehend a large software architecture, that is constantly changing: with its visual interfaces, Survol is also a team-building tool, bringing clarity and helping to give the same names to the same things.

What does it do ?

Survol allows to display any software entity or resources running on a computer. Simply said, it is a library of Python scripts, each of them displaying a facet of an information system.

These scripts are run by Survol agents, these agents running on one or several machines of the user application network. The web interface then displays and aggregates the heterogeneous information coming from the agents. It is not necessary to have an agent on all machines because many scripts can get information from different machines than their own. Strictly said, it is possible to run without an agent at all, just with a static JavaScript page which connects to the target machines. The agents are very lightweight and can also run on an Internet of Things (IoT) network.

The data model of Survol is based on classes, each of them defining a type of computer resources: processes, machines, files etc... Heterogeneous data are modeled into a single framework, then aggregated with an RDF inference engine, creating a global vision of the business information processing. It can display for example the tree of processes and sub-processes ...


or a directory and its sub-directories: each file is displayed with some basic properties. One can click on each box to get further information, as no keyboard is needed. No special technical skills are needed to use Survol.The general details one can grasp about the various interaction between components of an information system greatly help its understanding: links between machines, processes, databases and any other components are visible. Useful dependencies are extracted without documentation.

Survol fully respects the security policy of the network it is running on: if the agent runs on a privileged account, it will extract many information. But even with a dummy account, it will still be able to retrieve useful data about the analysed system. Survol does not ever modify or change anything on the machines it is running on, so it is very safe.

The picture on the right depicts shared memory segments and the processes mapping them. Everything can be combined into graphic reports, so everyone can understand. The data model borrows extensively its ontology and terminology from Common Information Model, an existing industrial standard. Therefore, it interacts freely with CIM implementations such as Microsoft WMI, OpenLMI, OpenPegasus and WBEM, and any other software based on this standard.

It is very easy to add new scripts and display a specific kind of information as your application defines. When resource types are not defined by CIM, Survol adds its own resource classes in a very simply way. If a user application defines its resource classes, it is very easy to add ones, along with associated scripts, in open or proprietary source code, without complicated setup. Just create a directory and add a new script at the right place.


The internal data model built by Survol agents, is a set of triples: subject, relation and object, homogeneous to Resource Description Framework (RDF), the core data type found in the Semantic web, a standard which provides a framework allowing data to be shared and reused across applications. RDF, especially appropriate for Artificial Intelligence applications, is an abstract model for Survol data, which are extracted from heterogeneous sources information system. Survol displays these data in several modes:

  • Interactive mode, fully interactive, designed for investigating, browsing and drilling into applications internals. It uses D3, a practical JavaScript library for manipulating graphs.
  • A print mode, based on SVG, where the rendered view cannot be modified but is designed to be nicely printed for reporting or presentations. The appearance is similar to the interactive one, but the layout does not depend on User interaction. It uses Graphviz, an open source graph visualization software.
  • The plain HTML mode, convenient to generate reports in plain text, reports which can be saved, and compared.
  • Finally, Survol is also a Semantic web service: It reports all its internal data into RDF-Schema format, so that any ontology editor such as Protégé or Apache Jena can apply their knowledge-based features.

Survol, is an open-source project: everyone can freely download and use it. Survol can have add-ons: It is very easy to customize Survol by adding new scripts and classes. One just needs to add Python scripts at the right place. Their returned information can now fully integrate with the rest of Survol model. Survol fully uses Python documentation features to expose your add-on and its integrated documentation.

Can I try ?

Survol is installed on this Linux machine, in different configurations. Here, you will find some use cases on how to use it:

How much does it cost ?

Survol is free and open-source and will stay so. But users might invest into its installation, consulting and training. Or possibly into proprietary development of specific scripts, adapted to their own needs.