For Twisted/XMPP developers: I've published Tx-XMPP, a (friendly) fork of Wokkel due to it being unmaintained for years. I've merged several PRs that I needed, along with code from `sat_tmp`, which was a "temporary" package to monkey-patch Wokkel to add those changes (finally not needed anymore […]
A screenshot of a terminal were Libervia CLI frontend is used with the `li contacts get` command. It renders the 2 registered contacts (Louise and Pierre) with their name, id, and groups. A flag show that they are encrypted (which is optional). Louise is in the groups "friends" and "school", we can see next to the groups the group IDs, and a lock indicating that they are encrypted too. Pierre is in the group "friends", and we can see that the group ID (Rs5uiXLhBwea6n8jfGj9rw) is the same as the group ID of "friends" for Louise. Using an ID for groups let edit them (rename them for instance) without breaking any feature using them.
The Libervia CLI is used with the command `li pubsub get -n urn:xmpp:contacts --no-decrypt` then `li pubsub get -n urn:xmpp:contacts-groups --no-decrypt`. The `--no-decrypt` flag is used to deactivate automatic decryption, and show was is really stored in the pubsub node. In both case, we can see items with the IDs corresponding the the contacts and groups from the previous screenshot, but the payload are <encrypted> elements which can't be read in plain text without the keys. This means that XMPP server administrator can't know the contacts and groups metadata.
OK so e2ee contact are implemented in Libervia, only in the CLI for now. Here are 2 screenshots:
- in the first one contacts are retrieved and rendered for the terminal. We can see contacts and groups IDs and that they are encrypted (which is optional but […]
[Original post on mastodon.social]
I'm finishing the implementation of contacts e2e encryption. This has been done in the context of the serverless metadata reduction grant (https://nlnet.nl/project/ServerlessXMPP/ As the name implies, it let you encrypt metadata on your contacts (name, groups, description), but can also be […]
Quick note: I’ve been quiet lately first because I was sick during FOSDEM and the following week, and secondly because I’ve been working hard to make Libervia’s installation and configuration easier, along with other improvements (I’ve notably worked on the forge). I hope to be able to talk […]
Folks I finally start to feel better. You still have a chance to meet me at the XMPP realtime lounge (aw1) to discuss about Libervia, SFU based video calls, XMPP forums, ActivityPub gateway, etc.
#XMPP #Fosdem #Libervia #fosdem2026
✅ Train booked
✅ Accommodation booked
See you at XMPP Summit 28 and FOSDEM'26!
#Brussels #FOSDEM #XMPP #Summit #Libervia
I've been working a lot on improving one2one audio/video implementation lately, in particular with CLI frontend.
Among the goodies, it is now possible to use custom GStreamer pipeline descriptions (for sources and/or sinks) and to redirect stdin or stdout.
For fun, you can now send a Blender […]
Libervia CLI Tip 16:
You need to modify many pubsub items? `li pubsub transform` is there to help.
It uses an executable (e.g., shell or Python script), gives it each item as input, and replaces it with the returned item. Use `DELETE` to retract the item, and `SKIP` to ignore it.
Very handy […]
Libervia CLI Tip 15:
When publishing a blog or other pubsub based feature, the item ID is often used in the URL when it is rendered for the web (e.g.; Libervia or Movim use something like `https://…/blog/<user>/<item_id>`).
It is then important to have a user-friendly item ID (e.g […]
Libervia CLI Tip 14:
You can edit a new or existing blog post with `li blog edit`.
This opens `$EDITOR`, and with supported editors (e.g., Vim or Emacs), it launches a split view: one pane shows the post body in your chosen syntax (e.g., Markdown), and the other displays the metadata.
Use […]
Libervia CLI Tip 13:
Somebody is annoying you or you're receiving unwanted messages? You can block a single entity with `li blocking block some_jid@example.org` or a whole domain with `li blocking block example.net`.
See who is already blocked with `li blocking list`, and remove an entity from […]
Libervia CLI Tip 12:
You want to communicate with people using a third-party network? XMPP has a long history of "gateways", server components which let you communicate with non-XMPP networks (so-called "legacy" networks in XMPP literature).
The `li gateway` commands help you discover […]
Libervia CLI Tip 11:
Libervia automatically caches pubsub nodes you are subscribed to.
You can control it with the `li pubsub cache` commands.
The search capabilities are really powerful, with full-text search and many filters.
You can find items across profiles, within a time frame, or on […]
I've officially finished the email<=>XMPP gateway grant 🎉. Lot of stuff done. The gateway is working but there are still things to do, notably finishing the e2ee encryption which is complex.
I'll most probably blog about it (and the previous A/V one) next week […]
Libervia CLI Tip 10:
You can get various kinds of information using `li info`:
- Features and items available for an entity (server, service, client, etc.) with `li info disco`
- Version of the software running with `li info version`
- Your current full JID and how long you have been connected […]
Libervia CLI tip 9:
You can manage your bookmarks with the `li bookmarks` commands.
`li bookmarks list` shows the rooms you’ve registered and if they are joined.
If you change the `joined` state with
`li bookmarks set --join <true|false> room@example.org`
All of your clients should join or […]
Libervia CLI tip 8:
You can check an entity’s response time with `li ping <some_jid>`.
If your server, a service, or any entity feels unresponsive, it’s an easy way to do a quick check.
It uses XEP-0199: XMPP Ping, but if the XEP is not implemented, an error should be received anyway, which […]
Libervia CLI tip 7:
Need to process items in bulk?
The `--output` flag has an inverse: `li input` allows you to use an input document as a source for command arguments.
For instance, you can prepare data in a LibreOffice Calc table, export it to CSV, and then use it with `li` to batch-process […]
Libervia CLI tip 6:
Most commands have an `-O, --output` option to format the output. By default, the output is pretty formatted for humans, but you can output in JSON, XML, or other formats.
With `template` output you can use Jinja templates, either built-in ones (the ones used in the web […]
A screenshot of the WIP forum page. On the left there is a field to enter an XMPP identifier (JID) to open another forum. In the middle, we can see the main panel showing a topic thread. It's header has a button to show/hide the left panel, the topic title, a full-text search field, and a subscribe/unsubscribe button. A post text is visible, along with a text editor field at the bottom with many formatting buttons (header size, bold, italic, underlined, strike-through, inline code, link, block-quote, block-code, ordered/unordered list, clear formatting, tags and attachments). The user is typing a reply and including a user mention. There are also some tags displayed below the editor.
Another screenshot of the forum feature redesign. Here you can see a topic with the editor below, with the user doing a mention. There are some tags too.
There are still improvements to do, but it's really close to be usable.
#Libervia #XMPP #forum #dev #nlnet #ngi
Libervia CLI tip 5:
You can retrieve or modify your contacts list (aka “roster” in XMPP terms) with `li roster`.
One of the subcommands, `stats`, gives you, as its name implies, statistics on your roster.
You’ll notably get the number of contacts per domain, with a percentage representing the […]
A screenshot of a the work-in-progress new forum interface of Libervia Web. Below the usual main menu (with "Chat," "Blog," "Forums," "Photos Albums," "Files Sharing," "Calendar," "Events," "Lists," "Merge requests," and "Calls.") we can see the forum feature with the listing of categories. On the left there is a panel to look for another forum by its identifier (JID). In the middle, there is a panel with the listing of current forum categories (the same as in my previous message a day ago). A prominent section titled "XMPP" is visible (the main category) with the text "Discussion and support for the eXtensible Messaging and Presence Protocol." Underneath, two forum listings are displayed: - "members.xmpp.org" with the description "XSF Members" - "standards.xmpp.org" with the description "XMPP Standards"
Here is the capture of the tree-like hierarchy of pubsub nodes I talked about yesterday, but this time rendered as forum categories in Libervia web. I’ve added an "XMPP" category and set descriptions (all part of pubsub node metadata). All of this benefits […]
[Original post on mastodon.social]
Note that file sharing and forums have existed for years in Libervia, in experimental form. Those have been useful to find the flaws and needs, and the acquired experience helped me to write those specifications.
#XMPP #Libervia #Specifications #XEP
A screen capture of Libervia CLI in a terminal showing a tree of pubsub nodes on the work-in-progress email gateway. The tree show a root node for forums, then the identifiers of 2 mailing lists converted from email to XMPP (`membes.xmpp.org` and `standards.xmpp.org`). This is a test instance, so only 3 comment nodes are seen for the `standards.xmpp.org` mailing list. We can read this: ``` % li pubsub list -cs email.tazar3.int urn:xmpp:forum:0 ├── members.xmpp.org └── standards.xmpp.org ├── urn:xmpp:microblog:0:comments/685041b7.050a0220.3aa7c3.52e0@mx.google.com ├── urn:xmpp:microblog:0:comments/685041ba.050a0220.3aa7c3.52e1@mx.google.com └── urn:xmpp:microblog:0:comments/91ca1f6a-489a-4f1c-ab34-a7583d97e21e@movim.eu ```
I've been working on implementing XEP-0496 (Pubsub Node Relationships) and XEP-0499 (Pubsub Extended Discovery) in Libervia to allow a tree-like hierarchy in pubsub nodes.
This is a big deal for many reasons, from better organisation to features which become […]
[Original post on mastodon.social]
Libervia CLI tip 4:
If you see an XMPP powered blog like those made with Libervia or Movim, you can use directly the `https:` URL to retrieve the XMPP blog or one of its posts.
For instance, to get my blog at https://www.goffi.org with Libervia CLI, you can do:
`li blog get -u […]
Libervia CLI tip 3:
You can use Libervia CLI to pipe out any command output to another entity:
`some_command | li pipe out some_entity@example.org`
The other entity can receive the data like this:
`li pipe in sending_entity@example.net | some_command_receiving_data`
This is experimental use […]
Hey small update on my work on Libervia.
I'm back from vacations, and finishing last steps on email <=> XMPP gateway. I'm still having the planning for the new grant to do.
I'm planning to have at least an alpha release by September, as Libervia is packed with new features, but no releases in […]
Photo d'un macaron avec le logo de Libervia (une étoile de mer rouge en style cartoon), "Jérôme" écrit dessous, et des petits cœurs rouges sur les côtés. Le tout est posé sur une soucoupe rouge.
Un macaron fait maison, à mon nom et avec le logo de Libervia c'est quand même la méga classe. Une jolie attention de ma femme. #libervia #cuisine #macarons