Cartography Developer Guide Running the source code Automated testing Implementing custom sync commands dev.Dockerfile Dev with docker-compose Run the full test suite Run a custom sync script Run the cartography CLI Equivalent manual docker commands Run unit tests with dev.Dockerfile Run the linter with dev.Dockerfile Run integration tests with dev.Dockerfile Run the full test suite with dev.Dockerfile Run a custom sync script with dev.Dockerfile Run cartography CLI with dev.Dockerfile How to write a new intel module How to extend Cartography with Analysis Jobs Overview The stages How to run Example job: which of my EC2 instances is accessible to any host on the internet? Our goal The logic in plain English Translating the plain-English logic into Neo4j’s Cypher syntax The skeleton of an Analysis Job Clean up first, then update Recap How to write a new intel module Before getting started… The fast way Configuration and credential management Supplying credentials and arguments to your module An important note on validating your commandline args Sync = Get, Transform, Load, Cleanup Get Transform Handling required versus optional fields Load Defining a node Defining node properties Node property indexes Defining relationships The result Additional concepts cartography’s update_tag: All nodes need these fields All relationships need these fields Run queries only on indexed fields for best performance indexes.cypher lastupdated and firstseen Cleanup Error handling principles Schema Making tests Other