# robocorp-action-server
[Robocorp Action Server](https://github.com/robocorp/robocorp#readme) is a Python framework designed to simplify the deployment of actions (AI or otherwise).
An `action` in this case is defined as a Python function (which has inputs/outputs defined), which is served by the `Robocorp Action Server`.
The `Robocorp Action Server` automatically generates an OpenAPI spec for your Python code, enabling different AI/LLM Agents to understand and call your Action. It also manages the Action lifecycle and provides full traceability of what happened during runs.
## 1. Install Action Server
Action Server is available as a stand-alone fully signed executable and via `pip install robocorp-action-server`.
> We recommend the executable to prevent confusion in case you have multiple/crowded Python environments, etc.
#### For macOS
```sh
# Install Robocorp Action Server
brew update
brew install robocorp/tools/action-server
```
#### For Windows
```sh
# Download Robocorp Action Server
curl -o action-server.exe https://downloads.robocorp.com/action-server/releases/latest/windows64/action-server.exe
# Add to PATH or move to a folder that is in PATH
setx PATH=%PATH%;%CD%
```
#### For Linux
```sh
# Download Robocorp Action Server
curl -o action-server https://downloads.robocorp.com/action-server/releases/latest/linux64/action-server
chmod a+x action-server
# Add to PATH or move to a folder that is in PATH
sudo mv action-server /usr/local/bin/
```
## 2. Run your first Action
```sh
# Bootstrap a new project using this template.
# You'll be prompted for the name of the project (directory):
action-server new
# Start Action Server
cd my-project
action-server start --expose
```
👉 You should now have an Action Server running locally at: [http://localhost:8080](http://localhost:8080), so open that in your browser and the web UI will guide you further.
👉 Using the `--expose` -flag, you also get a public internet-facing URL (something like "https://twently-cuddly-dinosaurs.robocorp.link") and the related token. These are the details that you need to configure your AI Agent to have access to your Action
## What do you need in your Action Package
An `Action Package` is currently defined as a local folder that contains at least one Python file containing an action entry point (a Python function marked with `@action` -decorator from `robocorp.actions`).
The `package.yaml` file is required for specifying the Python environment and dependencies for your Action ([RCC](https://github.com/robocorp/rcc/) will be used to automatically bootstrap it and keep it updated given the `package.yaml` contents).
> Note: the `package.yaml` is optional if the action server is not being used as a standalone (i.e.: if it was pip-installed it can use the same python environment where it's installed).
### Bootstrapping a new Action
Start new projects with:
`action-server new`
Note: the `action-server` executable should be automatically added to your python installation after `pip install robocorp-action-server`, but if for some reason it wasn't pip-installed, it's also possible to use `python -m robocorp.action_server` instead of `action-server`.
After creating the project, it's possible to serve the actions under the current directory with:
`action-server start`
For example: When running `action-server start`, the action server will scan for existing actions under the current directory, and it'll start serving those.
After it's started, it's possible to access the following URLs:
- `/index.html`: UI for the Action Server.
- `/openapi.json`: Provides the openapi spec for the action server.
- `/docs`: Provides access to the APIs available in the server and a UI to test it.
## Documentation
Explore our [docs](https://github.com/robocorp/robocorp/tree/master/action_server/docs) for extensive documentation.
## Changelog
A list of releases and corresponding changes can be found in the [changelog](https://github.com/robocorp/robocorp/blob/master/action_server/docs/CHANGELOG.md).
Raw data
{
"_id": null,
"home_page": "https://github.com/robocorp/robocorp/",
"name": "robocorp-action-server",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.10",
"maintainer_email": null,
"keywords": null,
"author": "Fabio Z.",
"author_email": "fabio@robocorp.com",
"download_url": "https://files.pythonhosted.org/packages/11/56/e68f149ef7723dc54b73c05f8186c5b604bbe69c2ddd5c4f1f2fe75df12a/robocorp_action_server-0.4.1.tar.gz",
"platform": null,
"description": "# robocorp-action-server\n\n[Robocorp Action Server](https://github.com/robocorp/robocorp#readme) is a Python framework designed to simplify the deployment of actions (AI or otherwise).\n\nAn `action` in this case is defined as a Python function (which has inputs/outputs defined), which is served by the `Robocorp Action Server`.\n\nThe `Robocorp Action Server` automatically generates an OpenAPI spec for your Python code, enabling different AI/LLM Agents to understand and call your Action. It also manages the Action lifecycle and provides full traceability of what happened during runs.\n\n## 1. Install Action Server\n\nAction Server is available as a stand-alone fully signed executable and via `pip install robocorp-action-server`.\n> We recommend the executable to prevent confusion in case you have multiple/crowded Python environments, etc.\n\n#### For macOS\n\n```sh\n# Install Robocorp Action Server\nbrew update\nbrew install robocorp/tools/action-server \n```\n\n#### For Windows\n\n```sh\n# Download Robocorp Action Server\ncurl -o action-server.exe https://downloads.robocorp.com/action-server/releases/latest/windows64/action-server.exe\n\n# Add to PATH or move to a folder that is in PATH\nsetx PATH=%PATH%;%CD%\n```\n\n#### For Linux\n\n```sh\n# Download Robocorp Action Server\ncurl -o action-server https://downloads.robocorp.com/action-server/releases/latest/linux64/action-server\nchmod a+x action-server\n\n# Add to PATH or move to a folder that is in PATH\nsudo mv action-server /usr/local/bin/\n```\n\n## 2. Run your first Action\n\n```sh\n# Bootstrap a new project using this template.\n# You'll be prompted for the name of the project (directory):\naction-server new\n\n# Start Action Server \ncd my-project\naction-server start --expose\n```\n\n\ud83d\udc49 You should now have an Action Server running locally at: [http://localhost:8080](http://localhost:8080), so open that in your browser and the web UI will guide you further.\n\n\ud83d\udc49 Using the `--expose` -flag, you also get a public internet-facing URL (something like \"https://twently-cuddly-dinosaurs.robocorp.link\") and the related token. These are the details that you need to configure your AI Agent to have access to your Action\n\n## What do you need in your Action Package\n\nAn `Action Package` is currently defined as a local folder that contains at least one Python file containing an action entry point (a Python function marked with `@action` -decorator from `robocorp.actions`).\n\nThe `package.yaml` file is required for specifying the Python environment and dependencies for your Action ([RCC](https://github.com/robocorp/rcc/) will be used to automatically bootstrap it and keep it updated given the `package.yaml` contents).\n\n> Note: the `package.yaml` is optional if the action server is not being used as a standalone (i.e.: if it was pip-installed it can use the same python environment where it's installed).\n\n### Bootstrapping a new Action\n\nStart new projects with:\n\n`action-server new`\n\nNote: the `action-server` executable should be automatically added to your python installation after `pip install robocorp-action-server`, but if for some reason it wasn't pip-installed, it's also possible to use `python -m robocorp.action_server` instead of `action-server`.\n\nAfter creating the project, it's possible to serve the actions under the current directory with:\n\n`action-server start`\n\nFor example: When running `action-server start`, the action server will scan for existing actions under the current directory, and it'll start serving those.\n\nAfter it's started, it's possible to access the following URLs:\n\n- `/index.html`: UI for the Action Server.\n- `/openapi.json`: Provides the openapi spec for the action server.\n- `/docs`: Provides access to the APIs available in the server and a UI to test it.\n\n## Documentation\n\nExplore our [docs](https://github.com/robocorp/robocorp/tree/master/action_server/docs) for extensive documentation.\n\n## Changelog\n\nA list of releases and corresponding changes can be found in the [changelog](https://github.com/robocorp/robocorp/blob/master/action_server/docs/CHANGELOG.md).\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Robocorp local task server",
"version": "0.4.1",
"project_urls": {
"Homepage": "https://github.com/robocorp/robocorp/",
"Repository": "https://github.com/robocorp/robocorp/"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "06372ee0acb5bd9c78a5b6a8e69a8fd148fe0279223b236a7114165170a48ce2",
"md5": "04ad29412b8d2694f2502287f0ddd118",
"sha256": "2bc0375d6d78ca1e87dec20771a7a25f642b179d524255f1d8fe69ee374a3520"
},
"downloads": -1,
"filename": "robocorp_action_server-0.4.1-cp310-cp310-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "04ad29412b8d2694f2502287f0ddd118",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<4.0,>=3.10",
"size": 14852513,
"upload_time": "2024-04-17T18:27:37",
"upload_time_iso_8601": "2024-04-17T18:27:37.351822Z",
"url": "https://files.pythonhosted.org/packages/06/37/2ee0acb5bd9c78a5b6a8e69a8fd148fe0279223b236a7114165170a48ce2/robocorp_action_server-0.4.1-cp310-cp310-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0ebe91cfd2ea94fd1a83bbf8a57da9b03cfff5526cef657b26fa08928f49ae0b",
"md5": "ed524e199ee1d4b15c5f8c2fa46a5ed8",
"sha256": "94ffdef025f4001fde986e8fc56489ab34f196228f4c36152e27390194f9fd6e"
},
"downloads": -1,
"filename": "robocorp_action_server-0.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "ed524e199ee1d4b15c5f8c2fa46a5ed8",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<4.0,>=3.10",
"size": 10660259,
"upload_time": "2024-04-17T18:23:57",
"upload_time_iso_8601": "2024-04-17T18:23:57.577235Z",
"url": "https://files.pythonhosted.org/packages/0e/be/91cfd2ea94fd1a83bbf8a57da9b03cfff5526cef657b26fa08928f49ae0b/robocorp_action_server-0.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "599ad4c5cf3b2b007a571ed52d985f80e21e10cd83149689a05181e6e93969eb",
"md5": "9b08849e51ba398498a80a0fe3c21138",
"sha256": "89ee60a98365dc2906fa765a7fd1b403df106ff565603d5eb3672e7e74da6bc1"
},
"downloads": -1,
"filename": "robocorp_action_server-0.4.1-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "9b08849e51ba398498a80a0fe3c21138",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<4.0,>=3.10",
"size": 8721784,
"upload_time": "2024-04-17T18:25:10",
"upload_time_iso_8601": "2024-04-17T18:25:10.514080Z",
"url": "https://files.pythonhosted.org/packages/59/9a/d4c5cf3b2b007a571ed52d985f80e21e10cd83149689a05181e6e93969eb/robocorp_action_server-0.4.1-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "25eebbbd516c67b7886f4fc1a0a76b4a06fe767a5162fb85e2be8a93fcab848d",
"md5": "c2416b6850e93573df8fa733141e0d01",
"sha256": "e7bcf944640935a14f3ffa26f5c8db56243c7761611f2eaa37d50e07a1a0d041"
},
"downloads": -1,
"filename": "robocorp_action_server-0.4.1-cp311-cp311-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "c2416b6850e93573df8fa733141e0d01",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<4.0,>=3.10",
"size": 14852513,
"upload_time": "2024-04-17T18:27:40",
"upload_time_iso_8601": "2024-04-17T18:27:40.401527Z",
"url": "https://files.pythonhosted.org/packages/25/ee/bbbd516c67b7886f4fc1a0a76b4a06fe767a5162fb85e2be8a93fcab848d/robocorp_action_server-0.4.1-cp311-cp311-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a4f9360e61f25335e94ff7c46330076f96bba112cdd09ad72d60698c7780cabb",
"md5": "78928f236bbfce13d1541b1397d3322d",
"sha256": "ac4ef9f2f405be7f47dea415f216cd6a06e6f90f0f851de07ac0aba1b6b099a3"
},
"downloads": -1,
"filename": "robocorp_action_server-0.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "78928f236bbfce13d1541b1397d3322d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<4.0,>=3.10",
"size": 10660254,
"upload_time": "2024-04-17T18:23:59",
"upload_time_iso_8601": "2024-04-17T18:23:59.891261Z",
"url": "https://files.pythonhosted.org/packages/a4/f9/360e61f25335e94ff7c46330076f96bba112cdd09ad72d60698c7780cabb/robocorp_action_server-0.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "614859bf6f012f76949f0397bc57e2e7629f13ed3a50d1f395021c3a975eb16f",
"md5": "8e5ffa327d7666e14d7e8cc00858ebc0",
"sha256": "c9dcf7a934853775639b7acccd6bc355f61686567c80ca0c68c5b19667a0ac88"
},
"downloads": -1,
"filename": "robocorp_action_server-0.4.1-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "8e5ffa327d7666e14d7e8cc00858ebc0",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<4.0,>=3.10",
"size": 8721784,
"upload_time": "2024-04-17T18:25:13",
"upload_time_iso_8601": "2024-04-17T18:25:13.264206Z",
"url": "https://files.pythonhosted.org/packages/61/48/59bf6f012f76949f0397bc57e2e7629f13ed3a50d1f395021c3a975eb16f/robocorp_action_server-0.4.1-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3316edaa209078a1516bbda04380a475ce0e6e4efdb72d023e8421636eaab3a1",
"md5": "77b04fc21587036188d04a0a7a783466",
"sha256": "60fc0cc0adbb37de401ad03283b5685061992d6f5a555c6d686190567a892d1f"
},
"downloads": -1,
"filename": "robocorp_action_server-0.4.1-cp312-cp312-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "77b04fc21587036188d04a0a7a783466",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.10",
"size": 14852513,
"upload_time": "2024-04-17T18:27:42",
"upload_time_iso_8601": "2024-04-17T18:27:42.812371Z",
"url": "https://files.pythonhosted.org/packages/33/16/edaa209078a1516bbda04380a475ce0e6e4efdb72d023e8421636eaab3a1/robocorp_action_server-0.4.1-cp312-cp312-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6b3702ad12da49d90dd34f75723c9037a1bd5465f80ecd6fbdd6fe46e8760a74",
"md5": "0ed270963d7f102891884efe6fca27f1",
"sha256": "818305ca198e6325266dab69b3596a2999fa7d13fc2c3d98fc113c169213119e"
},
"downloads": -1,
"filename": "robocorp_action_server-0.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "0ed270963d7f102891884efe6fca27f1",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.10",
"size": 10660254,
"upload_time": "2024-04-17T18:24:03",
"upload_time_iso_8601": "2024-04-17T18:24:03.215467Z",
"url": "https://files.pythonhosted.org/packages/6b/37/02ad12da49d90dd34f75723c9037a1bd5465f80ecd6fbdd6fe46e8760a74/robocorp_action_server-0.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux_2_5_x86_64.manylinux1_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4e811c3ffd75c9a4de5be46028828dca76ec56a3ac18144cfef53a9a5cb421a5",
"md5": "7dfa0c59e2f7b6c6618c32b09e65c30a",
"sha256": "7897edbbf1a7bee8c4daf461d8161dd2f3ffae1683562f0c724156b89159084b"
},
"downloads": -1,
"filename": "robocorp_action_server-0.4.1-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "7dfa0c59e2f7b6c6618c32b09e65c30a",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.10",
"size": 8721784,
"upload_time": "2024-04-17T18:25:15",
"upload_time_iso_8601": "2024-04-17T18:25:15.894688Z",
"url": "https://files.pythonhosted.org/packages/4e/81/1c3ffd75c9a4de5be46028828dca76ec56a3ac18144cfef53a9a5cb421a5/robocorp_action_server-0.4.1-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1156e68f149ef7723dc54b73c05f8186c5b604bbe69c2ddd5c4f1f2fe75df12a",
"md5": "2c71acd7a540395f247e1f528abab406",
"sha256": "4934681d090ecc5595c7e25d342538614b7e785d0f665fa4a8483569c872619f"
},
"downloads": -1,
"filename": "robocorp_action_server-0.4.1.tar.gz",
"has_sig": false,
"md5_digest": "2c71acd7a540395f247e1f528abab406",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.10",
"size": 391103,
"upload_time": "2024-04-17T18:23:26",
"upload_time_iso_8601": "2024-04-17T18:23:26.929557Z",
"url": "https://files.pythonhosted.org/packages/11/56/e68f149ef7723dc54b73c05f8186c5b604bbe69c2ddd5c4f1f2fe75df12a/robocorp_action_server-0.4.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-17 18:23:26",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "robocorp",
"github_project": "robocorp",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "robocorp-action-server"
}