RebeccaAIML is an enterprise cross platform open source
AIML development platform. RebeccaAIML supports C++, Java,
C#, and Python as well as many other programming languages
and AIML development out of the box. RebeccaAIML also
comes with an array of AIML administration tools, great
documentation, and an eclipse AIML editor plugin.

Get lastest Version

1.1tp3 (Slatter)


Rebecca is dual licensed as commercial and open source under the GPLv3 license. For a commercial license contact me.

Except for tech previews, RebeccaAIML has been compiled and tested underneath Windows XP as well as Linux Fedora Core 5, 4, and 3. However, it should be easily moveable to other flavours of Linux or other Unixes easily. If you have problems, PLEASE DROP ME A LINE, so I can fix 'em.


SourceForge Logo

1.1tp3(Slatter) Released

2007.09.16 - RebeccaAIML 1.1tp3 (Slatter) Released.

This is a bug fix version with improved internationalization support. See the userGuide for instructions on upgrading. The bug fixes are

  • Fixed a bug where escaped XML elements such as < > were not operating correctly. This effected reversed aiml.
  • Enhanced empty conditionals where they will now correctly allow you to use an empty string for a condition and it will return true if the predicate does not exist.
  • Fixed a nasty bug where if you have multiple star's and multiple users it would return an empty false positive string.

For international support, it has been improved upon within the core engine and with the various programming languages that RebeccaAIML supports. The fixes are

  • Dialects will work with the eclipse plugin now. The fix was within the core engine, so you only need to update RebeccaAIML and you won't need to update your eclipse plugin
  • The command line rs-admin tool now supports recieving dialects as well as correctly processing and outputing dialects.
  • Lastly, upper casing, lower casing, and formal'izing dialects will work correctly

1.1tp2(Slatter) Released

2007.09.03 - RebeccaAIML 1.1tp2 (Slatter) Released.

Hot on the heels of the first tech preview, this tech preview brings 3rd party upgrades and two bug fixes. See the userGuide for instructions on upgrading. The 3rd party upgrades are

  • Xerces 2.8.0
  • Berkeley DB 4.6.19
  • ICE 3.2.1

The two bugs fixed are

  • Fixed a bug with the networking C++ api where addDirectoryUnlessAlreadyAdded was calling the wrong order of arguments
  • Fixed a bug where the directory containing the embedded database would not create its self if it was on version of Windows XP which was not English based.

1.1tp1(Slatter) Released

2007.08.27 - RebeccaAIML 1.1tp1 (Slatter) Released.

This is a tech preview release to the upcomming (Slatter) series. The Edmondson series has come to an end as well as some old mentalities about AIML development as we know it.

This first tech preview release is only available underneath Windows. However, I promise before the full release of 1.1, a Linux version will be available.

Also, starting with this release RebeccaAIML will be available with a dual licensing scheme. If you are developing commercial applications based off of RebeccaAIML you will need to purchase a commercial license. However, if you are releasing your code underneath the GPL version 3 you can use RebeccaAIML underneath that license.

Now that is out of the way, what does this new version 1.1tp1 offer everyone?

Well, just check out the userGuide for 1.1tp1 which describes each feature in great length with plenty of great screen shots. Briefly though,

  • A windows installer
  • An Eclipse plugin for using Eclipse as an AIML editor
  • An embedded database engine for all AIML processing
  • Support for a multitude of programming languages such as C++, C#, Java, and Python
  • Excellent, fully documented, and easy to use APIs for various programming languages
  • Support for safe and concurrent multi-process access to AIML
  • Support for safe and concurrent multi-threading access to AIML
  • Includes command line tools to access and manipulate the AIML embedded database
  • Support for multiple users, multiple bots the users can have, and multiple end users accessing the users' bots
  • Scalability. RebeccaAIML can support an infinite number of users, bots, and, end users as long as you have hard drive space for more.
  • Near zero start times. Regardless of your number of users, bots, end users, RebeccAIML will restart in ~ 1 second.
  • A configurable amount of memory. Utilizing the embedded database tools you can configure how much memory RebeccaAIML will use for caching as well as fine tune her from a small machine to a large rack server.
  • Server and client model included. RebeccaAIML starts as a service and runs as a server in the background waiting for queries

0.9871 (Edmondson) Released

2006.09.07 - RebeccaAIML 0.9871 (Edmondson) Released.

I now include the executable, regression, in both the Windows and Linux prebuilt packages. This is for downloaders to be able to verify the quality of Rebecca for the version they download.

If you are not interested in the regression test suite then you do not have to worry about updating to this version. Other than including the regression suite, this version is identical to 0.987.

I also added the regression test suite to the autoconf build system where it builds it by default. This is for those who port RebeccaAIML to another platform to be able to run regression tests to ensure the quality of the port. Use

./configure --help

to see all the autoconf options available.

Updated the code for the regression testing. It now uses header and footer html files in resources/testing instead of having the html hard coded. Fixed the html page breaks. I also improved it to be dll boundary safe by having it use


instead of dynamically casting through


I also added an Arguments class to regression to enable a smooth transition over to autoconf

0.987 (Edmondson) Released

2006.09.01 - RebeccaAIML 0.987 (Edmondson) Released.

Condition and Li were not handling empty string cases correctly. See the latest regression tests in the documentation for the exact case (It's SETUP AND TEST CONDITION PREDICATE test case at the bottom).

Li::getPredicateName() and Li::getAimlPattern()

are now const methods. This change will break abi compatiblity with anyone using the framework but not api compatibility with the framework. Those using the framework will have to recompile and relink against this new version.

Added these methods to the framework on the class Li:

bool Li::isDefaultListItem()

It returns true if the Li is a default list item or not.

bool Li::isValueOnlyListItem()

It returns true if the Li is a value only list item.

bool Li::isNameAndValueListItem()

It returns true if the Li is a name and value list.

Added these methods to the framework on the class Condition:

bool Condition::isBlockCondition()

Returns true if this Condition is a block condition otherwise it will return false.

bool Condition::isSinglePredicateCondition()

Returns true if this Condition is a single predicate condition otherwise it will return false.

bool Condition::isMutliPredicateCondition()

Returns true if this Condition is a multi-predicate condition otherwise it will return false.

Updated documentation for


Removed the documentation about the bug aboug xsd not being validated. I really should have removed this a long time ago, but it's removed now.

See the doxygen See the documentation for more details of these new methods and updates.

0.9861 (Edmondson) Released

2006.08.06 - RebeccaAIML 0.9861 (Edmondson) Released

Whenever topic was being set it was not calling srai's correctly. This was due to a bad logging call.

0.986 (Edmondson) Released

2006.07.26 - RebeccaAIML 0.986 (Edmondson) Released

Fixed bug with


where I was not checking if the size of a string was greater than zero before using it.

Fixed a bug with srai where the star indexes were not being calculated right during srai.

Fixed a bug where rebecca would not let go of her internal AIML file and string caching system.

Upgraded the qtgui and tested it underneath QT 4.1.4

Added the Callback method


for when the AIML XML learn tag cannot find a file it will call this callback. This will allow the programmer to handle file not founds for AIML XML programmatically.

Added a new method


which acts the same as calling the AIML XML tag "System" by sending the command to the operating system and returning the output of the command.

0.985 (Edmondson) Released

2006.05.07 - RebeccaAIML 0.985 (Edmondson) Released

Added autoconf support for Unix'es and Linux. Now you can compile using

configure; make; make install

See the doc/linuxINSTALL.txt in the distribution for information on how to utilize this.

Added an Arguments class to each sample. The purpose of this is two fold. One is to show how you could parse arguments when utilizing RebeccaAIML api and the second is to make the installers of the samples easier to write in the future.

The Arguments class now gives a few switches with each sample. See the source code of each sample for the list of available switches. However, you can type

console.exe -help


consoleAIMLHtmlConverter.exe -help

to get a list of the switches too.

Tweaked the source files to work with gcc 4.1.0

Added RPM support to the build. In the download section you should now be able to download RPM's for Rebecca for several flavors of Fedora Core.

0.984 (Edmondson) Released

2006.04.10 - RebeccaAIML 0.984 (Edmondson) Released

Feature enhancement and bug fix release.

Added the feature of being able to add AIML strings to Rebecca on the fly through the method

GraphBuilder.addString("aiml string")

You can add a whole category programatically as easily as:

    "<pattern>test aiml string</pattern>"
    "<template>it simply works!</template>"

Added the learn tag per AIML 1.0.1 specification.

Fixed the gender, person, and person2 tag implementations to pass all of the regression tests.

Fixed the addFile and addDirectory to be tolerant of adding files which are native to the file system. Before you could at best portably use relative strings. Now you can use just about any file system string for




As a result of this I was able to simply part of the qtGUI core to using whichever native absolute paths that came from Windows or Unix.

See the documentation of these methods for more details.

Charlix released

2006.04.04 - Charlix released

Charles Chevallier has released Charlix, a desktop assistant which has been tested with RebeccaAIML. It is now added to the links and users sections.

Check it out here

0.983 (Edmondson) Released

2006.04.04 - RebeccaAIML 0.983 (Edmondson) Released

Bug fix release.

I fixed a bug reported by Charles Chevallier where when srai is called the input AIML tags behaved incorrectly. To fix this bug I had to alter the signature of


It now has a new boolean argument variable "keepPreviousUserInput". You set this to false if you do not want the previous user input stored internally. Usually you only want to set this to false when you call this from implementations of the Srai AIML tag.

I fixed a bug reported by Charles Chaevallier where when punctuation is at the begining of a Rebecca Response it would cause her to crash.

I fixed a one-off error where I incorrectly indexed some of the internal data structures and this would cause a crash.

Made the stack operational thanks to a missing predicate found by Ryan Neill.

Put in more bot properties (the most common ones), thanks to Ryan Neill for pointing this out to me.

0.982 (Edmondson) Released

2006.03.19 - RebeccaAIML 0.982 (Edmondson) Released

I fixed a bug under Linux for the


method. It would load the string given as when it should have loaded it as

I also fixed a bug reported by Charles Chevallier where Rebecca was not erasing commas before storing strings into her internal "that" variable. I added a regression test case for it so the bug will not reappear.

I also fixed the "System" AIML tag to be able to return the string now under both Windows and Linux. Now the regression test for the "System" tag works!

0.981 (Edmondson) Released

2006.03.04 - RebeccaAIML 0.981 (Edmondson) Released

Added a new cross platform simple QT GUI to the samples section to showcase how you would program a GUI with the RebeccaAIML engine. You should be able to see the screen shot at the top of the web page now.

Fixed a bug where when you call new and delete on AIMLFacade or StringPimpl it would crash under Windows if you were mixing and matching Debug and Release. Now, new and delete are dll boundary safe.

Forgot to put .98 in VERSION .98 for the


So, all resulting programs built using .98 will report they are version .972 when they encounter the AIML XML Tag "version". Fixed that in this version, it will say .981 when the "version" tag is encountered.

0.98 (Edmondson) Released

2006.02.14 - RebeccaAIML 0.98 (Edmondson) Released

I opened up the RebeccaAIML framework in which you can inherit from AIML XML Tag classes to add or modify the current working set. You will need Boost C++ library to use the framework. With the release of the framework you can now add your own custom AIML XML Tag dll or shared object in which you can change the functionality of the engine. The framework is fully documented and I provide a sample which overrides all the AIML XML Tags to provide a html converter. It converts AIML XML files into html pages with links. The html pages provide a way to "cruise" through the AIML brain and see how the brain would look like in memory.

You can see a sample of how the converter works by first looking at this basic AIML file aiml file and the resulting html files from the converter, html convertered

0.972 (Edmondson) Released

2005.11.27 - RebeccaAIML 0.972 (Edmondson) Released

Copy constructor of StringPimpl was not setting its private implementation handle to 0 and when it was called it would try to delete and in turn crash RebeccaAIML.

I also changed the default precompiled windows binary to be multithreaded dll instead of just multithreaded.

0.971 (Edmondson) Released

2005.11.20 - RebeccaAIML 0.971 (Edmondson) Released

Enabled true multi-lined that's. Now Rebecca can pass another regression test involving multi-lined that's. See documentation for the regression test results. Also now the "That" index's involving previous input's and previous sentences works correctly.

0.97 (Edmondson) Released

2005.11.06 - RebeccaAIML 0.97 (Edmondson) Released

A new regression testing system has been put into place. The regression test suite is that of ProgramD's. However, in the future I will add more test cases which should work for both the test regression suite here and for ProgramD's. How that is accomplished is through the use of xml to define the test cases. This is all from the work of Joel on ProgramD. From the regression testing, I have found bugs and made more fixes to this release. I also have found a few bugs which I will fix in an upcomming release. This release fixes yet another bug with the condition tag. The condition tag before only accepted AIML tags for the result of a succesful condition. Now regular text can be added as well to the condition tag as it should be. I also fixed up white space problems with this release as well as made the exceptions of FileNotFound and DirectoryNotFound more verbose.

RebeccaAIML 0.96 (Edmondson) Released

2005.10.20 - RebeccaAIML 0.96 (Edmondson) Released

This release fixes a bug in which the AIML tag "Condition" did not work at all. Also this release fixes the AIML.xsd. Therefore, I have enabled Schema validation in this release. With schema validation enabled, bad AIML tags will be reported to their respective callbacks and the XML parser automatically handles not adding bad AIML to the graph builder. Thus your callbacks will alert you to bad AIML tags, and your graph builder should still remain bullet proof. See the documentation for more details on XML callbacks through the class CallBacks.

0.951 (Edmondson) Released

2005.10.18 - RebeccAIML 0.951 (Edmondson) Released

A minor bug fix version.

Fixed the "muliti-lined that" bug. This bug was minor but an annoyance. Whenver a "that" has more than one line the last line should be choosen as the that.

0.95 (Edmondson) Released

2005.10.12 - RebeccaAIML 0.95 (Edmondson) Released

Initial release. All AIML tags are implemented except for the "learn" Tag and the java script.

There is currently a bug with the AIML.xsd that does not allow the AIML tag "Set" to validate correctly. So for the time being I have removed the AIML.xsd validation but will put it back as soon as that is fixed.