diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..cba4821
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,29 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+## Semantic versioning policy
+
+oneAPI-rs follows Semantic Versioning. Before 1.0.0, the public API is
+experimental: minor releases may contain breaking API changes, while patch
+releases are intended for compatible fixes.
+
+## Unreleased
+
+This is the first release of oneAPI-rs, a set of (mostly) safe Rust bindings
+for SYCL - an open, royalty-free, cross-platform abstraction layer that
+enables code for heterogeneous and offload processors to be written using
+modern ISO C++, and provides APIs and abstractions to find devices (CPUs,
+GPUs, FPGAs …) on which code can be executed, and to manage data resources
+and code execution on those devices.
+
+Documentation of oneAPI-rs including API description, architecture, and examples
+can be found at:
+
+### Added
+
+- Initial Rust API for discovering SYCL platforms and devices.
+- Queues, events, contexts, USM allocations, and host/device memory operations.
+- Runtime kernel bundle compilation and one-, two-, and three-dimensional
+ kernel launch support.
+- Derive support for typed kernel argument lists.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index f682f4e..be80e00 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,13 +1,63 @@
-# Contributing
+# Contributing to oneAPI-rs
-### License
+## Development setup
- is licensed under the terms in [LICENSE]. By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms.
+Install a Rust toolchain with Rust 2024 edition support and Intel oneAPI Toolkit
+2026.1. Clone the repository and initialize the oneAPI environment:
-### Sign your work
+```bash
+git clone https://github.com/oneapi-src/oneapi-rs.git
+cd oneapi-rs
+source /opt/intel/oneapi/setvars.sh
+cargo build --workspace
+```
+
+Replace `/opt/intel/oneapi` if the toolkit is installed elsewhere. To select a
+specific SYCL compiler, set `ONEAPI_CXX` to its full path.
+
+## Formatting
+
+Check Rust formatting:
+
+```bash
+cargo fmt --all -- --check
+```
+
+Check tracked C and C++ sources with `clang-format`:
+
+```bash
+git ls-files -z -- ':(glob)**/*.cpp' ':(glob)**/*.hpp' ':(glob)**/*.h' \
+ | xargs -0 --no-run-if-empty clang-format --dry-run --Werror
+```
+
+To apply Rust formatting, run `cargo fmt --all`. Apply C++ formatting with the
+project's installed `clang-format` before rerunning the check above.
+
+## Tests and examples
+
+Initialize the oneAPI environment in the current shell, then run the workspace
+tests:
+
+```bash
+source /opt/intel/oneapi/setvars.sh
+cargo test --workspace --verbose
+```
+
+The tests and examples require a working SYCL runtime and visible compatible
+device.
+
+## License
+
+oneAPI-rs is licensed under either the [Apache License 2.0](LICENSE-APACHE) or
+the [MIT License](LICENSE-MIT), at your option. By contributing to the project,
+you agree to the license and copyright terms therein and release your contribution
+under these terms.
+
+## Sign your work
-Please use the sign-off line at the end of the patch. Your signature certifies that you wrote the patch or otherwise have the right to pass it on as an open-source patch. The rules are pretty simple: if you can certify
-the below (from [developercertificate.org](http://developercertificate.org/)):
+Please use the sign-off line at the end of the patch. Your signature certifies
+that you wrote the patch or otherwise have the right to pass it on as an open-source patch.
+The rules are pretty simple: if you can certify the below (from [developercertificate.org](http://developercertificate.org/)):
```
Developer Certificate of Origin
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..65ddd2a
--- /dev/null
+++ b/README.md
@@ -0,0 +1,72 @@
+# oneAPI-rs
+
+Rust bindings for SYCL and the Intel oneAPI programming environment.
+
+> [!WARNING]
+> oneAPI-rs is experimental, has not released version 0.1.0, and is not ready
+> for production use. Its API may change without notice.
+
+## Supported platforms
+
+The tested configuration is:
+
+- Linux
+- Intel oneAPI Toolkit 2026.1
+- A SYCL device supported by the installed oneAPI runtime
+
+Other operating systems, oneAPI releases, and SYCL implementations are not
+currently tested or supported.
+
+## Prerequisites
+
+- A Rust toolchain with Rust 2024 edition support
+- Intel oneAPI Toolkit 2026.1, including the DPC++/C++ compiler and SYCL runtime
+
+Initialize the oneAPI environment before building or running the project:
+
+```bash
+source /opt/intel/oneapi/setvars.sh
+```
+
+Replace `/opt/intel/oneapi` if the toolkit is installed elsewhere. The build
+also accepts an explicit compiler through `ONEAPI_CXX`; the compiler must
+support C++17 and SYCL.
+
+## Installation
+
+The crates are not yet published. To build the workspace from source:
+
+```bash
+git clone https://github.com/oneapi-src/oneapi-rs.git
+cd oneapi-rs
+source /opt/intel/oneapi/setvars.sh
+cargo build --workspace
+```
+
+## Quick start
+
+List the SYCL devices visible to the runtime:
+
+```bash
+source /opt/intel/oneapi/setvars.sh
+cargo run -p oneapi-rs --example sycl-ls
+```
+
+The kernel launch examples demonstrate allocation, runtime kernel compilation,
+kernel submission, and copying results back to the host:
+
+```bash
+cargo run -p oneapi-rs --example kernel_launch
+```
+
+## Documentation
+
+- [API documentation](https://oneapi-src.github.io/oneapi-rs/oneapi_rs/)
+- [Examples](oneapi-rs/examples)
+- [Contributing](CONTRIBUTING.md)
+- [Changelog](CHANGELOG.md)
+
+## License
+
+Licensed under either the [Apache License 2.0](LICENSE-APACHE) or the
+[MIT License](LICENSE-MIT), at your option.