CS

Open Source Projects

My open source projects and contributions. View my full profile on GitHub.

Hybrid Groups

Personal Project

Hybrid Groups is a multi-user, multi-agent collaboration platform that enables users to interact with both agents and other users in group chats on Slack and GitHub. Agents act and respond according to each user's identity, preferences and privileges, enabling secure access to a user's private resources while collaborating in a team.

PythonPydantic AIAnthropicOpen AIGemini

freeact

Personal Project

freeact is a lightweight AI agent library using Python as the common language to define executable actions and tool interfaces. This is in contrast to traditional approaches where actions and tools are described with JSON. A unified code-based approach enables freeact agents to reuse actions from earlier steps as tools or skills in later steps. This design allows agents to build on their previous work and compose more complex actions from simpler ones.

This demo of freeact shows how an agent dynamically generates and executes code to perform web searches and return accurate answers based on real-time data.

PythonAnthropicOpen AIGemini

Generative Internet Search with Local LLMs

Contribution

I created a generative internet search tool using Retrieval-Augmented Generation (RAG). The tool accepts user queries in natural language and searches the internet for information, filters and re-ranks the result by relevance and generates responses based on the search results using a LLM. It is designed for local deployment, utilizing smaller open LLMs (specifically Llama3-8B) and a local metasearch engine, eliminating the need for external search-API keys.

The search could be used either as a standalone tool or by an agent equipped with tool-handling capabilities. This is illustrated in the following notebook, where the internet search tool is integrated into an agentic workflow that uses tools, implementing an agentic RAG approach.

For more information see this blog post.

PythonPyTorchHF TransformersHF BitsandbytesHF Sentence TransformersHF Datasetsllama.cppLangChain

Perceiver IO

Contribution

A modular implementation of the Perceiver family of model architectures (Perceiver, Perceiver IO, and Perceiver AR) in PyTorch. The library integrates with PyTorch Lightning for distributed training and Hugging Face for inference.

I made various improvements to the library and implemented:

  • Optical flow estimation predicting the apparent motion of each pixel between two consecutive video frames and
  • Symbolic audio modeling showcasing how to use a Perceiver AR audio model to generate symbolic (MIDI) audio data, by training Perceiver AR on the GiantMIDI-Piano dataset.
PythonPytorchTorchvisionPytorch LightningHugging Face TransformersHugging Face DatasetsFairscale

A ML-based Intrusion Detection System

Personal Project

This project is a proof of concept for a machine learning-based system able to identify malicious network traffic. It addresses the limitations of traditional signature-based methods by learning normal network behavior from benign data packets, enabling the system to detect anomalous data flows and potentially novel types of attacks.

The project is comprised of a research repository, a fully functional REST API for network attack detection and an API client.

PythonTensorFlowKerasCatboostScikit-learnPandasHyperoptFlaskDocker

Image Captioning Transformer

Contribution

Extension of pytorch/fairseq with Transformer-based image captioning models. I implemented an evaluation pipeline for models using MS COCO Caption Evaluation.

PythonPytorchFairseq

Eventuate

Contribution

Eventuate is a toolkit for building applications composed of event-driven and event-sourced services that communicate via causally ordered event streams on a single node or distributed up to global scale.

I was responsible for the Vert.x integration into Eventuate and developed the Vert.x adapter, enabling bidirectional event communication between event logs and the Vert.x event bus, incorporating features like at-least-once delivery guarantees and enhanced event metadata handling. I also made various improvements to the Java API and the corresponding documentation.

ScalaJavaAkkaApache CassandraApache SparkLevelDBEventuateVert.x

Alpakka Kafka

Contribution

The Alpakka Kafka connector enables the integration of Apache Kafka with Akka Streams.

I enhanced the Kafka producer's reliability by implementing deterministic failure handling that prevented message reordering and ensured consistent behavior when encountering send failures.

ScalaJavaAkkaAkka StreamsApache Kafka

Event sourcing for Akka Streams

Contribution

The akka-stream-eventsourcing project that provides persistence via event sourcing for Akka Streams.

I implemented a generic Akka-Serializer that used Google Protobuf to handle the serialization of events.

ScalaAkkaAkka StreamsApache Kafka