Skip to main content

We build systems that lift the capabilities of programmers dealing with the vast complexity of modern software systems. Our systems automate away inessential complexity and automate in desired features — for example, securing programs that use hundreds of software dependencies, bolting distribution onto existing applications, and parallelizing large-scale pipelines built out of multi-language components. We characterize the behavior of the systems we build using real workloads seen in practice, often paired with mathematical models and proofs of key properties of interest.


News #

Mar'26: Apply to attend the 2026 Brown Systems Week in beautiful Providence, RI!
Feb'26: Jiayi Wu and Kaitlyn Cheng join the group as UTRAs!
Jan'26: We are organizing a tutorial on Analyzing Shell Scripts at POPL'26—join us in Rennes, France!
Sep'25: Early ideas on LLM guardrails, hybrid scheduling, and verifiable kernel extensions at SOSP'25 workshops!
Aug'25: Two NSDI'26 papers on optimization prediction and fault tolerance for opaque distributed systems!
Jul'25: Our benchmark suite for the shell received the Best Paper Award at USENIX ATC'25!
Jul'25: Our group received a Google ML-and-Systems Junior Faculty Award on Securing Open-Source Software!
Jul'25: Evangelos Lamprou joins the group for his PhD!
Jun'25: Our paper on the Koala benchmark for the shells was accepted at Usenix ATC'25—the last one, ever!
May'25: Grigorios Ntousakis started his internship at IBM research!

See all news


Team #


Research #

supply-chain

Automating Protections Against Software Supply-Chain Threats
Modern software incorporates thousands of dependencies as a means of accelerating development and reducing cost—risking safety and security for both developers and end-users. We have built a series of systems targeting the JavaScript ecosystem—the largest such ecosystem out there—automating the analysis, transformation, and synthesis of JavaScript dependencies across a variety of threat models. Examples: AsiaCCS'23, CCS'21, CCS'21.

systems

Automating Acceleration and Scale-out of Software Systems
Language-agnostic programming environments hinder automated parallelization and distribution, often forcing developers to manually rewrite programs and their components in languages that support these features. We have built a series of systems that accelerate, parallelize, distribute, and scale out computations fully automatically—while maintaining key correctness and security guarantees. Our systems target widely used environments—e.g., JavaScript, Python, the Shell—and are offered by open-source consortia such as the Linux Foundation. Examples: NSDI'23, OSDI'22, EuroSys'21.

microservices

Automated Transformation Towards Secure Scalable Computing Paradigms
Recent trends are pushing developers towards new paradigms of secure and scalable computing—e.g., confidential computing, microservices, serverless computing, and edge computing. Transforming a conventional program to leverage these paradigms is a laborious manual process that can lead to suboptimal performance and in many cases even break the program. We are developing systems that support this kind of decomposition and leveraging special hardware capabilities when these are available in the network. Examples: ARES'22, PLDI'19, ATC'19.

correctness

Automating Software Correctness
Programming correctness in modern software systems is hard to maintain as applications scale across dependencies, languages, and distributed environments. We build systems that automatically enforce, validate, and preserve correctness properties while remaining practical for real workloads. Examples: HotOS'25, ICFP'21, HotOS'23, ARES'22, CCS'21.