Welcome to the new site

The blogspot blog the served as the home for Monal will continue to exist for historical reasons and also because the article I wrote about the security weaknesses of Facebook chats XMPP implementation still draws a lot of traffic.

Monal has grown significantly since it’s release. I think this site will better serve the needs of the everyone using it.  In particular, I think the help section will answer the most common questions.


Monal 2.0.3 Submitted

Monal 2.0.3 is a major update that fixes bugs and adds important updates.


This is a major update that improves the application significantly.

1. Proper multi tasking. It will run in the background until you logout or close the app. No more 10 minute limit.|
2. Manually set XMPP priority
3. Shows offline contacts
4. Added gtalk extensions for google apps
5. fixed an issue with Digest-Md5 servers and connectivity
6. Fixed a bug with some non english messages not arriving
7. improved auto recovery in the event of a network error
8. when swiping to close an active chat it says “close” instead of delete. When clearing a chat log it says “clear” and not delete
9. improved UI for adding new contact
10. shows a badge with a count of messages received on app icon
11. status is not overwritten when setting away
12. fixed misc crashing bugs with the UI
13. new buddy details screen
14  optimized and switched from GCC to LLVM+Clang compiler
15. Added Multi user chat (MUC) menus.
16. Removed browser tab from iPad UI


Group chat (MUC)

Monal supports XMPP MUC (Multi user chat)

Using Group Chat

If  a group chat room is entered, Monal will join it  and it will show up in both the  active chats list and as an online “user” in the contacts list.  Talking in a group chat is the exact same as talking in a normal one. When entering a room, Monal requests the server send the last 5 messages  of the conversation if it is available.


If invited to a room, Monal will ask to accept the invitation and join the room if accepted.


Joining a Room

A room is joined by going to In the More-> Group chat.

If the server supports it, Monal will discover at login what the address of the group chat service is.    The server field on this page  will be  filled with the correct information if it is discovered.

After entering the room name  and a password if necessary, tap join to enter the chat. Monal will either connect or return an error.

Leaving a Room

To leave a room, swipe the item in active chats and  press the close button.

Setting Nickname

Not available in the current build but will be available in the future.

Searching Rooms

Not available in the current build but will be available in the future.

Searching  Users

Not available in the current build but will be available in the future.

XMPP Feature list

This page contains the XMPP features of Monal ( currently 2.0.7).


  • Direct connection
  • Connection over VPN
  • Connection with new style SSL (using start TLS ).  This works on any port.
  • Connection with old style SSL.  Force this by setting port to 5223. A future release will have old style allowed on any port.
  • Connection without SSL
  • SSL with self signed certificates (this is automatic)
  • DNS SRV record  discovery

Authentication Mechanisms:

  • SASL Plain
  • SASL Digest-MD5
  • Legacy  Authentication (XEP-0078)
  • Download contact’s icon
  • Download contact’s full name
  • Retrieve  messages sent while user was offline
  • Update contact’s status
  • Set own status message
  • Invisible mode
  • Set away
  • Update status message with currently playing iPod song
Contact list:
  • View currently online contacts
  • View offline contacts
  • Add a new contact
  • Remove a contact
  • Authorize others adding you to their contact list
  • Search for users on server and add to contact list (XEP-0055)

  • landscape and all orientations  for all windows
  • Full log of past conversations
  • Sound,vibrate on new message. Sound cannot be changed in this version
  • Emoticons
  • Links are detected and open in safari when clicked
  • Join multiple user chat (MUC)
  • 2 pane iPad view

Multi tasking:

  • Multi tasking until app is closed or user logs out (3GS and up normally, 3G and up when jailbroken)
  • Notification of new message when phone is locked ( all iOS devices)
  • Notification of new messages when running in the background in iOS4
  • Jingle VOIP requires real IP. Does not have STUN and NAT traversal yet.
  • iTunes file transfer


About Monal

Monal is developed and maintained by Anurodh Pokharel  in Boston. He can be reached at info@monal.im. Monal is written completely from scratch in Cocoa and does not use any libraries for the XMPP protocol implementation.  The wonderful Monal icon was created  by Ayush Pokharel.

Many icons are  from Joseph Wain‘s excellent Glyphish Pro set. Free icons  are used under the creative commons attribution license

The Jingle VOIP functions use JRTPlib by Jori Liesenborgs for RTP. VOIP wouldn’t have been possible without it.

Special thanks also goes to members of  the WebEx Developer Program at Cisco, who were incredibly helpful setting up accounts to test compatibility. The WebEx support would not have been possible without them.

Adium was the inspiration for this program and it’s debug output  log was used very heavily when initially studying XMPP.