flows.mdx 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. ---
  2. title: "Flows"
  3. description: "Quick start guide to using Flows for your OSINT investigations."
  4. category: "Getting started"
  5. order: 5
  6. author: "Flowsint Team"
  7. tags: ["tutorial", "getting-started", "flows"]
  8. version: "1.2.8"
  9. last_updated_at: "2026-05-15"
  10. ---
  11. ### What are Flows?
  12. Flows are the chaining of multiple enrichers, where the output of one becomes the input of the next, allowing an investigation to be broadened or deepened.
  13. Some enrichers can be chained together, to that they can provide a reproductible and scalable research flow that can be re-applied to other entities of the same type.
  14. ### Getting started with Flows
  15. The best way to get started with flows is to go to [http://localhost:5173/dashboard/flows](http://localhost:5173/dashboard/flows) and create a new flow.
  16. From that, you can start building your first flow; a flow consists of **one** input type, and multiple chained enrichers.
  17. Start by drag & dropping your input type to the canva and start using the "**+**" button to add more enrichers to your flow.
  18. Once you're satisfied with the flow, you can start viewing the execution order by pressing the "**compute**" button.
  19. Make sure you give it a descriptive name and save ! (`crtl + s` or presse the save button).
  20. Once it's done, go back to one of your sketches, right click on an item of the same type of the flow, and you should be able to launch it from the "flows" section.
  21. ### Flow schema
  22. Every time a flow is launched, a log file is created at `flowsint_core/enricher_logs`.
  23. ```json
  24. {
  25. "sketch_id": "6aa808e4-1360-4c4a-b94f-4bed6c914836",
  26. "scan_id": "52ba38a2-3f2c-4c8b-a7a5-42656f8fb845",
  27. "created_at": "2025-10-26T15:57:52.243549",
  28. "updated_at": "2025-10-26T15:57:52.424052",
  29. "status": "completed",
  30. "enricher_branches": [
  31. {
  32. "id": "branch-0",
  33. "name": "Main Flow",
  34. "steps": [
  35. {
  36. "nodeId": "Domain-1761469976169",
  37. "params": {},
  38. "type": "type",
  39. "inputs": {},
  40. "outputs": {
  41. "domain": [
  42. "example.com"
  43. ]
  44. },
  45. "status": "pending",
  46. "branchId": "branch-0",
  47. "depth": 0
  48. },
  49. {
  50. "nodeId": "domain_to_ip-1761469978018",
  51. "params": {},
  52. "type": "enricher",
  53. "inputs": {
  54. "Domain": null
  55. },
  56. "outputs": {
  57. "address": "example.com",
  58. "latitude": "example.com",
  59. "longitude": "example.com",
  60. "country": "example.com",
  61. "city": "example.com",
  62. "isp": "example.com"
  63. },
  64. "status": "pending",
  65. "branchId": "branch-0",
  66. "depth": 1
  67. }
  68. ]
  69. }
  70. ],
  71. "execution_log": [
  72. {
  73. "step_id": "branch-0_domain_to_ip-1761469978018",
  74. "branch_id": "branch-0",
  75. "branch_name": "Main Flow",
  76. "node_id": "domain_to_ip-1761469978018",
  77. "enricher_name": "domain_to_ip",
  78. "inputs": [
  79. "example.com"
  80. ],
  81. "outputs": [
  82. {
  83. "address": "12.34.56.78",
  84. "latitude": null,
  85. "longitude": null,
  86. "country": null,
  87. "city": null,
  88. "isp": null
  89. }
  90. ],
  91. "status": "completed",
  92. "error": null,
  93. "timestamp": "2025-10-26T15:57:52.274147",
  94. "execution_time_ms": 144,
  95. "cache_hit": false
  96. }
  97. ],
  98. "summary": {
  99. "total_steps": 1,
  100. "completed_steps": 1,
  101. "failed_steps": 0,
  102. "total_execution_time_ms": 144
  103. },
  104. "final_results": {
  105. "initial_values": [
  106. "example.com"
  107. ],
  108. "branches": [
  109. {
  110. "id": "branch-0",
  111. "name": "Main Flow",
  112. "steps": [
  113. {
  114. "nodeId": "domain_to_ip-1761469978018",
  115. "enricher": "domain_to_ip",
  116. "status": "completed",
  117. "outputs": [
  118. {
  119. "address": "12.34.56.78",
  120. "latitude": null,
  121. "longitude": null,
  122. "country": null,
  123. "city": null,
  124. "isp": null
  125. }
  126. ]
  127. }
  128. ]
  129. }
  130. ],
  131. "results": {
  132. "domain_to_ip-1761469978018": [
  133. {
  134. "address": "12.34.56.78",
  135. "latitude": null,
  136. "longitude": null,
  137. "country": null,
  138. "city": null,
  139. "isp": null
  140. }
  141. ]
  142. },
  143. "reference_mapping": {}
  144. }
  145. }
  146. ```