CLI tool
dappros/ethora avatar
dappros/ethora

Ethora SDK Monorepo: What the Submodule Layout Tells You Before You Clone

SDK monorepo for Ethora chat / messaging platform. (1) Pick an SDK for your frontend stack. (2) Integrate manually or using ethora-setup. (3) Optionally configure app settings, deploy AI agents etc. Server: ethora.com cloud [free]. Dedicated server + SLA option for enterprise customers.

553 stars113 forksJavaScriptApache-2.0

At a glance

What is it?
Ethora is a chat and AI messaging SDK family distributed as git submodules, with a React.js component, native Android and iOS SDKs, a WordPress plugin, and a cloud backend. The top-level repository is a navigation layer, not a library, and that distinction determines how you adopt it.
Who is it for?
Adopt Ethora if you need XMPP-backed chat with an AI bot layer and you are working in React.js, since that SDK carries the widest documented coverage and custom component overrides. Skip it if you need dark mode on the web or reactions in React Native, both of which the matrix lists as absent.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • dappros/ethora553 ★ · +9
Star history
Repository2026-09-112026-11-14
dappros/ethora544553

9 Stars in the last 64 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

The top-level repository contains no SDK code

Cloning dappros/ethora gives you a directory of submodule pointers, a feature matrix, and API reference material. The README states each component lives in its own focused repository, linked as git submodules. So the React.js chat component is not in this tree; it resolves to dappros/ethora-chat-component. The same applies to the React Native, Kotlin, Swift, WordPress, bot, and RAG demo repositories. If you want a library to install, you clone the submodule repository directly. The monorepo exists so a developer can see the whole ecosystem at once, and so a scheduled workflow can bump every pointer in one commit. That workflow, described in .github/workflows/bump-submodules.yml, runs every six hours on weekdays, updates each submodule to the latest commit on its remote default branch, and commits the pointer bumps straight into main. Read that as a statement about the top-level repo's role: it tracks upstream heads rather than pinning tested combinations. A clone of main today and a clone next week can resolve to different submodule commits with no release note in between.

Who this is aimed at, and the AI layer that separates it from a plain chat widget

The feature matrix is the clearest statement of intent. Five frontends are covered: React.js, React Native, native Android in Kotlin, native iOS in Swift, and a WordPress plugin described as a no-code chat widget. Underneath sits XMPP, with the hosted gateway listed as wss://xmpp.chat.ethora.com:5443/ws, and the repository topics name ejabberd explicitly. So the transport is not a proprietary socket protocol; it is XMPP with MUC rooms for group chat and MAM pagination for message history, both of which appear as supported capabilities. The AI side is where the project draws its own boundary: the topics list rag, mcp and chatbot, the repository table includes a bot framework described as XMPP, LLM and automation, RAG pipeline demos, a website crawler for RAG ingestion, and an MCP CLI for IDE and agent integration. A team that wants a chat widget with an LLM answering inside a room is the target. A team that wants a general-purpose message bus, or a chat product without any AI component, is paying for surface area it will not use.

Getting credentials before you write any integration code

The README recommends running npx @ethora/setup first. According to the documentation, that command creates an account, sets up an app, and generates config files for your target SDK. It also supports connecting to a self-hosted server instead of the cloud. This is the step that produces the credentials every SDK needs, which means the integration path is account-first rather than library-first. If you would rather not create an account to evaluate, the hosted services table lists a playground at playground.chat.ethora.com with code export and HTTP testing, plus a Swagger reference at api.chat.ethora.com/api-docs. The QA environment at chat-qa.ethora.com is explicitly marked for pre-release validation only, with chat.ethora.com named as the canonical default. That is a useful detail: point early tests at QA, not at the production host, and do not assume the two behave identically. The per-SDK quick paths are all manual: cd sdk-reactjs then npm install for the web component, cd sdk-reactnative then npm install, and for the native SDKs the README defers to Gradle setup in sdk-android/README.md and Swift Package Manager setup in sdk-swift/README.md. Those inner READMEs are where the actual embedding instructions live, and the top-level file does not duplicate them.

The feature matrix shows the SDKs are not interchangeable

The matrix covers 44 capabilities across five frontends, and the gaps are specific rather than cosmetic. React.js is the only frontend with delivery status indicators and in-app notifications marked present. Reactions are present on React.js, Android and iOS but absent on React Native. Dark mode is present only on Android. Theming is marked partial on React.js and React Native and present on Android and iOS. Offline message cache is partial on React Native. The README computes coverage as present plus partial weighted at half, giving React.js 77 percent, Android 76 percent, React Native 68 percent, iOS 68 percent, and WordPress 14 percent. WordPress at 14 percent is the honest number for a plugin whose row shows text messaging, 1:1 messaging and OAuth as partial and everything else absent or unmarked. The matrix carries a review date of 2026-04-21 against v26.04, and the README says a monthly AI-reviewed update is proposed via PR. Treat that date as the shelf life of the table. If you are choosing between React Native and React.js for a product that needs reactions, the matrix currently answers that question for you.

Where the submodule model costs you

The automatic bump workflow is the main structural risk. It updates every submodule to the latest commit on its remote default branch every six hours on weekdays and commits into main. For a consumer that means the top-level repository is a moving reference, not a tested snapshot. If you need reproducible builds, the submodule repositories themselves are what you should depend on, and you should pin a tag or commit there rather than tracking the monorepo. The second cost is documentation depth. The top-level README describes setup, hosting and coverage, but embedding instructions, configuration keys and component override APIs are pushed down into each submodule's own README. The third cost is the versioning scheme. Releases are named v26.09, v26.08 and v26.07, dated monthly, which reads as a calendar version rather than semantic versioning. That is fine for a platform with a hosted backend, but it gives you no signal about breaking changes from the number alone.

When a self-hosted XMPP stack is the better answer

Ethora is XMPP with MUC, MAM and a bot layer on top. If your requirement is a chat backend you control end to end and you already run ejabberd or Prosody, the honest comparison is against assembling that yourself: an XMPP server, a client library such as Strophe.js or Smack, a MAM pagination implementation, and your own room provisioning. That path costs more engineering time and gives you full control over the protocol surface, the deployment topology and the version pinning. Ethora's value is the prebuilt UI layer and the AI bot and RAG tooling, which is exactly the part you would otherwise write. The reverse case matters too: if you want a hosted chat vendor with a managed message store and no XMPP semantics leaking into your architecture, Ethora's self-hosted server support and XMPP gateway are features you would be working around rather than using. The README lists a dedicated server with an SLA option for enterprise customers. Verify those terms directly before treating the enterprise tier as a procurement path.

Licence, maintenance and the monthly release cadence

The repository is Apache-2.0. That permits commercial use, modification and redistribution with the usual obligations around notices and patent grant, but I am not giving legal advice and the submodule repositories may carry their own licence files. Check each one you actually depend on, since a monorepo licence does not automatically govern every linked repository. The last push is dated 2026-09-09, releases land monthly, and thirteen submodules are listed as Active with one, the React Native app, marked Legacy. The bump workflow runs on a six-hour weekday schedule, which implies someone is expected to notice when it breaks. If you are planning a multi-year integration, those are the questions to put to the maintainers rather than infer from the release names.

Editorial conclusion

Adopt Ethora if you need XMPP-backed chat with an AI bot layer and you are working in React.js, since that SDK carries the widest documented coverage and custom component overrides. Skip it if you need dark mode on the web or reactions in React Native, both of which the matrix lists as absent. Before committing, verify the feature table against features/features.yaml, read the README inside sdk-reactjs, and run npx @ethora/setup against the QA environment at chat-qa.ethora.com rather than production.

Frequently asked questions

What is actually in the ethora repository itself?

Only git submodule pointers to thirteen separate SDK, app, tool and demo repositories, plus an inline REST API specification in `api/`, and process files including a security policy, QA scenarios, release notes and a `doap.xml`. Cloning needs `--recurse-submodules`.

How current is the ethora SDK feature matrix?

The matrix states it was last reviewed on 2026-04-21 against version v26.04, with a monthly AI reviewed update proposed by pull request. Releases have continued monthly since, reaching v26.10 on 2026-10-01.

Which Ethora SDK has the widest feature coverage?

The summary line publishes React.js at 77%, Android 76%, React Native and iOS at 68% each and WordPress at 14%, computed over 44 features. The visible table lists 21 capability rows and does not reproduce those numbers, so read the per capability marks rather than the percentages.

Does Ethora require its cloud service, or can it be self-hosted?

Both. The cloud server is offered free with a dedicated server and SLA for enterprise customers, the setup CLI can connect to a self-hosted server, and the feature matrix marks self-hosted server support as present on all five SDKs.

How do Ethora submodule updates happen?

A workflow in `.github/workflows/bump-submodules.yml` runs every 6 hours on weekdays and on manual dispatch, moves each submodule to the latest commit on its remote default branch, and commits the pointer bumps directly into `main` without a pull request.

Official sources

  1. dappros/ethora on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/dappros-ethora.svg)](https://hysenlabs.com/projects/dappros-ethora)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/dappros-ethora.svg)](https://hysenlabs.com/projects/dappros-ethora)

Was this useful?