A command-line tool and Go library for querying and modifying JSON, YAML, TOML, XML, CSV and other structured data with one selector syntax.
pocoproject/poco
Cross-platform C++ class libraries for building network-centric applications, covering HTTP, networking, databases, XML/JSON and logging.
- Stars
- 9,489
- Forks
- 2,325
- Open issues
- 154
- Last commit
- yesterday
What is it?
POCO (Portable Components) C++ Libraries are a collection of C++ class libraries that address frequently encountered practical problems, with a focus on internet-age, network-centric applications. Conceptually they resemble the Java Class Library or the .NET Framework, but are built on modern standard C++ and complement the STL rather than replacing it.
The libraries target a wide range of platforms, from embedded devices to servers, and are released under the Boost Software License. The build is driven by CMake, with optional dependencies such as OpenSSL, MySQL, PostgreSQL and ODBC enabling secure connections and database access. Components can be built selectively for size-constrained deployments.
The repository's topics cover HTTP client and server, networking, SQL and database access, MongoDB and Redis clients, JSON, XML, configuration and logging, so developers can often use POCO alongside Boost in the same project.
Key features
- 01Provides HTTP client and server components for network applications.
- 02Includes database access for SQL databases, plus MongoDB and Redis clients.
- 03Offers JSON and XML parsing, configuration and logging utilities.
- 04Supports OpenSSL and native Windows SChannel TLS.
- 05Builds with CMake and can be installed via vcpkg or Conan.
- 06Allows selective component builds to reduce binary size.
Use cases
- Building HTTP services or clients in C++ on desktop, server or embedded Linux.
- Accessing MySQL, PostgreSQL or ODBC databases from a C++ application.
- Adding a C++ logging and configuration layer to an existing networked product.
- Running the same networking code across Windows, Linux and macOS.
Quick start
- 1
Install dependencies on Debian/Ubuntu
sudo apt-get -y update && sudo apt-get -y install git g++ cmake libssl-dev libmysqlclient-dev libpq-dev - 2
Clone the repository
git clone -b main https://github.com/pocoproject/poco.git - 3
Configure the build with CMake
cd poco && mkdir cmake-build && cd cmake-build && cmake .. - 4
Build the libraries
cmake --build . --config Release
Things to know
- Requires a C++20-capable compiler and CMake 3.26 or newer.
- Optional database and TLS features need extra client libraries such as OpenSSL, MySQL, or PostgreSQL.
In collections
Topics
FAQ
- What is poco?
- Cross-platform C++ class libraries for building network-centric applications, covering HTTP, networking, databases, XML/JSON and logging. POCO (Portable Components) C++ Libraries are a collection of C++ class libraries that address frequently encountered practical problems, with a focus on internet-age, network-centric applications. Conceptually they resemble the Java Class Library or the .NET Framework, but are built on modern standard C++ and complement the STL rather than replacing it.
- Is poco free to use? What license does it have?
- poco is open source under the Other license. Check the license terms before using it in commercial products.
- Is poco still maintained?
- Actively maintained. The last commit to poco was on Oct 23, 2026.
- What can I use poco for?
- Building HTTP services or clients in C++ on desktop, server or embedded Linux. Accessing MySQL, PostgreSQL or ODBC databases from a C++ application. Adding a C++ logging and configuration layer to an existing networked product. Running the same networking code across Windows, Linux and macOS.
- How do I install poco?
- Install dependencies on Debian/Ubuntu: sudo apt-get -y update && sudo apt-get -y install git g++ cmake libssl-dev libmysqlclient-dev libpq-dev Clone the repository: git clone -b main https://github.com/pocoproject/poco.git Configure the build with CMake: cd poco && mkdir cmake-build && cd cmake-build && cmake .. Build the libraries: cmake --build . --config Release
- Where can I get poco?
- The source code and installation instructions are on GitHub: https://github.com/pocoproject/poco
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A lightweight C++ base library bundling goroutine-style coroutines, networking, logging, flag parsing, JSON, unit testing and benchmarking.
Open-source JSON editor that turns JSON, YAML, CSV and XML into interactive graphs, with format conversion and code generation.
A PHP extension providing an event-driven networking engine and coroutine runtime for building long-running TCP, UDP, HTTP, and WebSocket services.
A C++11 parallel computing and asynchronous networking framework used in Sogou's back-end services, for building DAG-based task workflows.
A simple, elegant Python HTTP library for sending HTTP/1.1 requests with sessions, cookies, auth, and JSON support.