Introducing Stealth

2018-05-21 ☼ chatbotsopen sourceprojects

After eight months of development, I’m excited to announce the official launch of Stealth. Stealth is an open source Ruby framework for creating conversational voice and text chatbots.

Back in August 2017, Matthew Black and I started imagining a better way to build chatbots. We wanted a framework that included:

With all of those goals in mind, we decided to create an open source, Ruby framework. We chose the Ruby language not only because it’s our favorite, but also because of the diverse community and rich libraries (gems) available. We even modeled a lot of Stealth around Ruby on Rails.

In addition to all of the great things already provided by Ruby and Rails (ActiveRecord, ActiveSupport, Sidekiq, Sinatra, RSpec, Bundler, wide support, etc.) we also added a few specific things that make building Ruby chatbots with Stealth fun and easy.

Since Stealth is an MVC-architected framework, we had to design our own View layer. We call them Replies. Replies are YAML templates that support ERB. Regardless of which messaging platform your bot is connected to, replies are standardized. This means that connecting your bot to a new network can be as trivial as adding a new gem.

We also built our own concept of sessions. Sessions in Stealth are Redis-backed and they map users to positions within your bot. We call those positions flows and states. You can think of flows and states as lightweight state machines. More info about both are in our Getting Started guide.

Lastly, we designed best practices right into the framework. By default, bots come with three flows: Hello, Goodbye, and CatchAll. The hello and goodbye flows handle user entrances and exits. The catch_all flow is responsible for errors and for the times your bot fails to comprehend a user’s message. You can think of the catch_all flow as our advanced version of the HTTP 500 error page. The catch_all flow is capable of re-asking questions, routing users to different flows, and even handing off a conversation to a human operator. More info about catch_alls can be found in our documentation.

We are releasing version 1.0 today and it contains support for everything mentioned above. Additionally, version 1.0 comes with official support for Facebook Messenger and SMS (via Twilio). It also supports Mixpanel analytics and the AWS Comprehend NLP/NLU service.

We hope you love building chatbots with Stealth, and we can’t wait to see what you build. We already have so many more features and service integrations planned, but we welcome your feedback and pull requests! 🤖