> For the complete documentation index, see [llms.txt](https://socrates.gitbook.io/socrates/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://socrates.gitbook.io/socrates/readme.md).

# What is Socrates?

## *A Simple Automation Server*

[![@coreui angular](https://img.shields.io/badge/@coreui%20-angular-lightgrey.svg?style=flat-square)](https://github.com/coreui/angular)

[Socrates](#a-simple-automation-server) is a simple automation server, inspired by Jenkins. It can run tasks in any code language and present them in a friendly dashboard to non-technical users.

![](/files/gbvOp41wQFDZazQA9bXU)

## Quickstart

*For Evaluation and Testing:*

1. Download the `docker-compose.yaml` file from the root of the repository.
2. Run `docker-compose up` and wait until all components are healthy.

## Features

* Define [Parameterized](/socrates/fundamentals/parameters.md) [Blocks](/socrates/fundamentals/projects.md) of code in any language to be run in Docker.
* Define Static and [Dynamic](/socrates/fundamentals/parameters/dynamic.md) [parameters](/socrates/fundamentals/parameters.md) to be used by all Blocks.
* Create [Instances](/socrates/fundamentals/instances.md) of code that can be run individually.
* Create [Steps](/socrates/fundamentals/flows/step-flows.md) and [DAG](/socrates/fundamentals/flows/dag-flows.md) [Flows](/socrates/fundamentals/flows.md) using Instances of code.
* Save [Artifacts](/socrates/fundamentals/instances/artifacts.md) and Outputs, managed by Minio S3.
* [Schedule](/socrates/fundamentals/scheduler.md) any component and view it in a timeline.
* Connect a [Github](/socrates/configuration/settings/github.md) repository with or without a Webhook, automatically update all the code in the server.
* Manage a friendly [Developer Portal](/socrates/use-cases/user-portal.md), give your jobs custom names and folders.
* Can be run on [Docker or on Kubernetes](/socrates/guides/creating-your-first-project.md)

## Components

Socrates's main components are the basic terms that define how to work with the server.

| Component                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Block](/socrates/fundamentals/projects.md)              | A Block is a component made of a Code in a specific Language. It might have [parameters](/socrates/fundamentals/parameters.md), defaults, and a Pre-Code in `Shell` to execute before the main. It may also be directly attached to a file in [Github](/socrates/configuration/settings/github.md).                                                                                                                                                         |
| [Instance](/socrates/fundamentals/instances.md)          | An Instance is attached to a [Block](/socrates/fundamentals/projects.md). It is essentially a [Parameterized](/socrates/fundamentals/parameters.md) [Block](/socrates/fundamentals/projects.md), with its own execution History. Multiple Instance can exist for the same [Block](/socrates/fundamentals/projects.md). It can be run individually, inside a [Flow](/socrates/fundamentals/flows.md) or be [scheduled](/socrates/fundamentals/scheduler.md). |
| [Steps Flow](/socrates/fundamentals/flows/step-flows.md) | Steps Flow is a pipeline of one or more [Instances](/socrates/fundamentals/instances.md) arranged in Steps. They share ENV Variables ([parameters](/socrates/fundamentals/parameters.md)) and Outputs to the next Steps. It has its own execution history and can be drilled down to individual Instances.                                                                                                                                                  |
| [DAG Flow](/socrates/fundamentals/flows/dag-flows.md)    | DAG Flow is a pipeline of one or more [Instances](/socrates/fundamentals/instances.md) arranged in a Graph. They share ENV Variables ([parameters](/socrates/fundamentals/parameters.md)), and pass Outputs to the next Nodes in the Branch. It has its own execution history and can be drilled down to individual [Instances](/socrates/fundamentals/instances.md).                                                                                       |
| [Parameters](/socrates/fundamentals/parameters.md)       | Each [Block](/socrates/fundamentals/projects.md) and its [Instance](/socrates/fundamentals/instances.md) have "parameters" which always include defaults. These are basically translated as Strings (Environment Variables) inside the execution of any code language in its virtual machine. Parameters can also be [Dynamic](/socrates/fundamentals/parameters/dynamic.md).                                                                               |

## License

Apache 2.0


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://socrates.gitbook.io/socrates/readme.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
