Appweb is a compact, fast and secure embedded web server supporting HTTP/1, HTTP/2, and WebSockets. With a 1-4MB memory footprint, event-driven multi-threaded architecture, and comprehensive security features, it's optimized for embedded applications, IoT devices, and resource-constrained environments.
Key Features:
- Compact & Fast: 1-4MB footprint with exceptional throughput
- Protocol Support: HTTP/1.0, HTTP/1.1, HTTP/2, WebSockets
- Security First: Sandboxing, authentication (Basic, Digest, Form), SSL/TLS, defensive countermeasures
- Modular Architecture: Loadable handlers for CGI, FastCGI, ESP, PHP, Proxy
- Production Ready: Widely deployed in networking equipment, telephony, mobile devices
- Cross-Platform: Linux, macOS, Windows, VxWorks, ESP32, FreeRTOS
Appweb is in a maintenance phase. It is actively supported and will receive security updates as required, but it will not have new features added.
If you are creating a new device or planning your upgrade path for the future, we recommend you consider the Ioto Device Agent. It incorporates everything we've learned from Appweb over 20 years of developing device management software. Talk to us about how to upgrade to Ioto at Support.
The European Union has introduced the Cyber Resilience Act (CRA), a regulation aimed at enhancing cybersecurity for IoT products. This legislation mandates that manufacturers ensure their products are secure throughout their entire lifecycle, from design to decommissioning. This requires that software updates are provided for the lifetime of the device.
To meet this need, Appweb now includes the Embedthis Updater library and command line utility that can be used to automatically download and apply software updates to all your Appweb-enabled devices. The EmbedThis Builder can be used to publish, distribute, manage and track software updates for your Appweb devices.
See LICENSE.md for details.
Online Documentation:
- Complete User Guide: https://www.embedthis.com/appweb/doc/
- Configuration Reference: https://www.embedthis.com/appweb/doc/users/configuration.html
- Routing Guide: https://www.embedthis.com/appweb/doc/users/routing.html
- Security Guide: https://www.embedthis.com/appweb/doc/users/security.html
Local Documentation:
- API Reference:
doc/index.html(generate withmake doc) - Design Document:
doc/DESIGN.md(comprehensive architecture and implementation guide) - Build Guide:
CLAUDE.mdandAGENTS.md
You can build Appweb with make, Visual Studio or Xcode.
make
or to see the commands as they are invoked:
make SHOW=1
You can pass make variables to tailor the build. For a list of variables:
make help
To run
make run
make
The make.bat runs projects/windows.bat to locate the Visual Studio compiler. If you have setup your CMD environment for Visual Studio by running the Visual Studio vsvarsall.bat, then that edition of Visual Studio will be used. If not, windows.bat will attempt to locate the most recent Visual Studio version.
To build with Visual Studio, you will need to install the vcpkg dependency manager and install openssl.
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat
.\vcpkg integrate install
.\vcpkg install openssl
Then open the Visual Studio solution file at:
projects/appweb-windows-default.sln
Then select Build -> Solution.
To run the debugger, right-click on the "appweb" project and set it as the startup project. Then modify the project properties and set the Debugging configuration properties. Set the working directory to be:
$(ProjectDir)\..\..\test
Set the arguments to be -v
Then start debugging.
You may need to install the Windows Power Shell if not already installed on your system.
winget install --id Microsoft.PowerShell --source winget
Open the solution file:
projects/appweb-macosx-default.sln
Choose Product -> Scheme -> Edit Scheme, and select "Build" on the left of the dialog. Click the "+" symbol at the bottom in the center and then select all targets to be built. Before leaving this dialog, set the debugger options by selecting "Run/Debug" on the left hand side. Under "Info" set the Executable to be "appweb", set the launch arguments to be "-v" and set the working directory to be an absolute path to the "./test" directory in the appweb source. The click "Close" to save.
Click Project -> Build to build.
Click Project -> Run to run.
If you have built from source using Make, you can install the software using:
sudo make install
sudo make uninstall
The src/server directory contains a minimal appweb.conf suitable for production use without SSL. The test directory contains an appweb.conf that is fully configured for testing. When using the src/server/appweb.conf, change to the src/server directory to run. When using the test/appweb.conf, change to the test directory to run.
The test suite is located in the test/ directory and uses the
TestMe framework.
The test suite requires the following prerequisites:
- Bun: v1.2.23 or later
- TestMe: Test runner (installed globally)
Install Bun by following the instructions at:
https://bun.com/docs/installation
Install TestMe globally with:
bun install -g --trust @embedthis/testme
Run the tests with:
make test
or manually via the tm command.
tm
To run a specific test or group of tests, use the tm command with the test
name.
tm basic/