{"id":13880553,"url":"https://github.com/CSML-by-Clevy/csml-engine","last_synced_at":"2025-07-16T17:30:40.955Z","repository":{"id":37571778,"uuid":"245127811","full_name":"CSML-by-Clevy/csml-engine","owner":"CSML-by-Clevy","description":"CSML is an easy-to-use chatbot programming language and framework.","archived":false,"fork":false,"pushed_at":"2023-07-11T14:30:24.000Z","size":14851,"stargazers_count":714,"open_issues_count":3,"forks_count":62,"subscribers_count":9,"default_branch":"dev","last_synced_at":"2025-06-13T01:37:30.013Z","etag":null,"topics":["chatbot","csml","interpreter","language","programming-language","rust"],"latest_commit_sha":null,"homepage":"https://csml.dev","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CSML-by-Clevy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-03-05T10:03:14.000Z","updated_at":"2025-04-12T21:59:00.000Z","dependencies_parsed_at":"2024-01-13T20:58:37.654Z","dependency_job_id":"aaec6776-992e-4937-94f4-89a88f9365b0","html_url":"https://github.com/CSML-by-Clevy/csml-engine","commit_stats":{"total_commits":1125,"total_committers":11,"mean_commits":"102.27272727272727","dds":0.3084444444444444,"last_synced_commit":"29ea42b5416a2e7a7c9ad0ede99799dc70b63ae1"},"previous_names":["csml-by-clevy/csml-interpreter"],"tags_count":71,"template":false,"template_full_name":null,"purl":"pkg:github/CSML-by-Clevy/csml-engine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSML-by-Clevy%2Fcsml-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSML-by-Clevy%2Fcsml-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSML-by-Clevy%2Fcsml-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSML-by-Clevy%2Fcsml-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CSML-by-Clevy","download_url":"https://codeload.github.com/CSML-by-Clevy/csml-engine/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSML-by-Clevy%2Fcsml-engine/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265181763,"owners_count":23723938,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chatbot","csml","interpreter","language","programming-language","rust"],"created_at":"2024-08-06T08:03:10.777Z","updated_at":"2025-07-16T17:30:40.397Z","avatar_url":"https://github.com/CSML-by-Clevy.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"\n\u003ch1 align=\"center\"\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://www.csml.dev\"\u003e\u003cimg src=\"./images/csml-horizontal-whitebg-v3.png?raw=true\" alt=\"CSML\" width=\"200\"\u003e\u003c/a\u003e\n  \u003cbr\u003e\n\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003eFirst programming language dedicated to building chatbots.\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/CSML-by-Clevy/csml-engine/workflows/Rust/badge.svg\" alt=\"Rust\"\u003e\n  \u003ca href=\"https://github.com/CSML-by-Clevy/csml-engine/releases/latest\"\u003e\u003cimg alt=\"GitHub release (latest by date)\" src=\"https://img.shields.io/github/v/release/csml-by-clevy/csml-engine?label=latest%20release\u0026logo=Latest%20release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://hub.docker.com/r/clevy/csml-engine\"\u003e\u003ca href=\"https://hub.docker.com/r/clevy/csml-engine\"\u003e\u003cimg alt=\"Docker Image Version (latest semver)\" src=\"https://img.shields.io/docker/v/clevy/csml-engine?label=docker\u0026sort=semver\"\u003e\u003c/a\u003e\u003c/a\u003e\n  \u003ca href=\"https://join.slack.com/t/csml-by-clevy/shared_invite/enQtODAxMzY2MDQ4Mjk0LWZjOTZlODI0YTMxZTg4ZGIwZDEzYTRlYmU1NmZjYWM2MjAwZTU5MmU2NDdhNmU2N2Q5ZTU2ZTcxZDYzNTBhNTc\"\u003e\u003cimg src=\"https://img.shields.io/badge/slack-CSML-blue.svg?logo=slack\" alt=\"Slack\"\u003e\u003c/a\u003e  \n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#key-features\"\u003eKey Features\u003c/a\u003e •\n  \u003ca href=\"#example\"\u003eExample\u003c/a\u003e •\n  \u003ca href=\"#getting-started\"\u003eGetting started\u003c/a\u003e •\n  \u003ca href=\"#additional-information\"\u003eAdditional Information\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://play.csml.dev\"\u003eTry CSML online\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch2 align=\"center\"\u003e\n  \u003cimg src=\"./images/csml-demo.png\" alt=\"CSML-demo\" width=\"700\"\u003e\n\u003c/h2\u003e\n\n[CSML (Conversational Standard Meta Language)](https://csml.dev) is both a domain-specific programming language and chatbot engine, designed to make it easy to develop complex chatbots.\n\nWith a very expressive and text-only syntax, CSML flows are easy to understand, making it easy to deploy and maintain conversational agents. CSML handles short and long-term memory slots, metadata injection, and connecting to any third party API or injecting arbitrary code in any programming language thanks to its powerful runtime APIs.\n\n## Key Features\n\n* Text-only, expressive syntax, easy to learn and develop complex chatbot scenarios with\n* Rich and extensible conversational components such as Carousel, Image, Video, Button, Card, Input, Calendar...\n* Built-in short-term and long-term memory slots: no more complex state machine boilerplate\n* Portable, fast, and easy to deploy: it only requires a standard MongoDB, PostgreSQL or SQLite database\n* Vibrant community of over 20,000 active CSML developers\n\n## Example\n\n```cpp\nstart:\n  say \"Hi, nice to meet you, I'm a demo bot 👋\"\n  if (name) {\n    say \"I already know you 😉\"\n    goto known\n  }\n  else \n    goto name\n\nname:\n  say Question(\n    \"I'd like to know you better, what's your name?\",\n    buttons=[\n      Button(\"I'm anonymous 😎\", accepts=[\"No\", \"Nope\"]) as anonBtn\n    ],\n  )\n  hold\n  if (event.match(anonBtn)) {\n    remember name = \"anon\"\n  } else {\n    remember name = event\n  }\n  goto known\n\nknown:\n  if (name == \"anon\")\n    say \"...but I know you don't want to say too much about yourself!\"\n  else \n    say \"You are {{name}}!\"\n  goto end\n```\n\nThe full documentation is available on https://docs.csml.dev/language.\n\n# Getting Started\n\nThe simplest way to get started with CSML is to use CSML Studio, a free online development environment with everything already setup to start creating bots right away, directly in your browser.\n\nTo get started with CSML Studio: https://studio.csml.dev\n\nCSML Studio gives you a free playground to experiment with the language as well as options to deploy your chatbots at scale in one-click.\n\n## Self-hosted / cloud / local installation\n\nCSML is available as a self-hostable web server that you can easily install with one of the options below.\n\nNote that you will need a database. The default choice is **MongoDB**, but **Amazon DynamoDB**, **PostgreSQL** and **SQLite**\nare also available by choosing the `mongodb`, `dynamodb`, `postgresql` or `sqlite` engine DB type with a slightly different set of environment variables.\n\nBefore you start, make sure that you have the environment set with following options:\n\n```\nENGINE_DB_TYPE=mongodb # must be one of mongodb|dynamodb|postgresql|sqlite\n\n# for mongodb\nMONGODB_URI=mongodb://username:password@localhost:27017\nMONGODB_DATABASE=csml\n\n# for postgresql\nPOSTGRESQL_URL=postgres://user:password@hostname:port/database\n\n# for sqlite\nSQLITE_URL=csml.db\n\n# for dynamodb (requires S3 for storage of large items)\nAWS_ACCESS_KEY_ID= # or use a local IAM role\nAWS_SECRET_ACCESS_KEY= # or use a local IAM role\nAWS_REGION=\nAWS_DYNAMODB_ENDPOINT= # optional, defaults to the dynamodb endpoint for the given region.\nAWS_DYNAMODB_TABLE=\nAWS_S3_ENDPOINT= # optional, defaults to the S3 endpoint for the given region\nAWS_S3_BUCKET=\n\n# CSML Server configuration\nENGINE_SERVER_PORT=5000\nENGINE_SERVER_API_KEYS=someAuthKey4CsmlServer,someOtherAuthKey\n\n# Other optional engine configuration\nENGINE_ENCRYPTION_SECRET=some-secret-string # if not set, data will not be stored encrypted\nTTL_DURATION=30 # auto-remove chatbot user data after X days\nLOW_DATA_MODE=true # do not store contents of sent/received messages\nDISABLE_SSL_VERIFY=false # reach trusted endpoints with known invalid certificates\nDEBUG=true # print debug output in console\nCSML_LOG_LEVEL=error # print log output in stderr. Possible values are error, warn, info, debug, trace.\nMODULES_URL= # default module repository base url\nMODULES_AUTH= # default module auth token\n```\n\n### Deploy to Heroku\n\n\u003ca href=\"https://heroku.com/deploy?template=https://github.com/CSML-by-Clevy/csml-engine/tree/master\"\u003e\n  \u003cimg src=\"https://www.herokucdn.com/deploy/button.svg\" alt=\"Deploy to Heroku\"\u003e\n\u003c/a\u003e\n\n### Using a ready-to-use binary (Linux and MacOS only)\n\nThe easiest way to launch a CSML Engine on your own machine is to use one of our pre-built, optimized binaries (available for both MongoDB and Amazon DynamoDB). These binaries are available as executables on each of CSML's releases since v1.3.0.\n\nFollow the installation guide (for ubuntu, but the process will be similar on other operating systems) along on this blog post: https://blog.csml.dev/how-to-install-a-self-hosted-csml-engine-on-ubuntu-18-04/\n\nTo download the latest CSML Server binaries, [head over to the latest release](https://github.com/CSML-by-Clevy/csml-engine/releases/latest) and make sure to download the right version for your architecture.\n\n**Mac users**: upon first execution of this binary, Mac will probably open a warning about the application not being signed ([more info from Apple](https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_distribution)). As this is not intended as a widely-distributed application, we decided to not go through the notarization process for now, but you can safely ignore that warning! However, if you prefer, you can always [build this package from source](#with-rust-from-source).\n\n### With Docker\n\nWe provide a docker image for easy self-hosted usage.\n\n```\ndocker pull clevy/csml-engine\n```\n\nTo get started with CSML Engine on Docker: https://github.com/CSML-by-Clevy/csml-engine-docker\n\n### With Rust, from source\n\nCSML is built in [Rust](https://www.rust-lang.org/). You don't need to know any Rust to run it though! Make sure you are running Rust v1.46+ and that you have openssl installed on your machine (or an equivalent for your linux distribution, such as libssl), then run:\n\n```\ncd csml_server\n\n# for use with MongoDB\ncargo build --release --features csml_engine/mongo\n\n# for use with Amazon DynamoDB\ncargo build --release --features csml_engine/dynamo\n```\n\nAfter that, execute your build (by default under ./targets/release/csml_server) and visit http://localhost:5000 for some request examples.\n\n### With Node.js\n\nThis repository provides Node.js bindings of this rust library. To use this library in a Node.js project, you will need to build it from source. There are a few requirements:\n\n- Current Rust Stable version (v1.61.0 and above)\n- Node.js LTS\n- cargo-cp-artifact v0.1.6 [required dependencies](https://www.npmjs.com/package/cargo-cp-artifact)\n- libssl-dev (or equivalent for your architecture: openssl-dev, libssl-devel...)\n\nTo compile CSML Engine into a [native node module](https://Node.js.org/api/addons.html), run:\n\n```shell\ngit clone https://github.com/CSML-by-Clevy/csml-engine csml\ncd csml/bindings/node/native\nnpm run build -- --release\n```\n\n\u003e NB: you can build specifically for MongoDB, DynamoDB, SQLite or PostgreSQL by using one of the specialized scripts (i.e `npm run build:mongodb`) in the [package.json](./bindings/node/native/package.json).\n\nThis method will output this native file: `csml/bindings/node/native/index.node` that you can simply `require()` (or `import`) in your project. For more details about how to use this module in your own projects, you can have a look at [our implementation for Docker version](https://github.com/CSML-by-Clevy/csml-engine-docker/blob/master/app/server.js).\n\nPlease note that if you plan to deploy your project on a different architecture, you will need to recompile the project on that architecture. We recommend using git submodules if you need to integrate CSML Engine in your own Node.js projects.\n\n## REST API documentation\n\nCSML Server's HTTP REST API documentation is available in OpenAPIv3 format: [swagger.yaml](./csml_server/swagger.yaml). To read this file easily, you can open it in [Swagger Editor](https://editor.swagger.io).\n\n## Additional Information\n\n### Play with the language\n\n* [Studio] - Create and deploy your chatbot in a matter of minutes.\n* [Playground] - Test and learn CSML in your browser.\n\n[Studio]: https://studio.csml.dev\n[Playground]: https://play.csml.dev\n\n### Getting Help\n\n* [Slack] - The official CSML community.\n* [CSML Documentation](https://docs.csml.dev) - Getting started.\n\n[Slack]: https://csml-by-clevy.slack.com/join/shared_invite/enQtODAxMzY2MDQ4Mjk0LWZjOTZlODI0YTMxZTg4ZGIwZDEzYTRlYmU1NmZjYWM2MjAwZTU5MmU2NDdhNmU2N2Q5ZTU2ZTcxZDYzNTBhNTc\n\n### Information\n\n* [Release notes](https://updates.csml.dev/) - Stay up to date.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCSML-by-Clevy%2Fcsml-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCSML-by-Clevy%2Fcsml-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCSML-by-Clevy%2Fcsml-engine/lists"}