diff --git a/AGENTS.md b/AGENTS.md
index 5a5be98..8079476 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -15,7 +15,7 @@ mvn test -Dtest=ClassName # single test class
- **`SecureCompletionClient`** — low-level client: key mgmt, HTTP, encryption, decryption
- **`SecureChatCompletion`** — high-level OpenAI-compatible surface (`create()`, `acreate()`)
- **`Constants`** — all protocol/crypto constants (version, algorithms, timeouts)
-- **`SecureMemory`** — Java 25 FFM `SecureBuffer` for locked/zeroed memory
+- **`SecureMemory`** — Java 25 FFM `SecureBuffer` for locked/zeroed memory. Use `try-with-resources` for all sensitive cryptographic material (AES keys, private RSA keys, IVs, nonce, plaintext bytes) to guarantee zeroing on scope exit.
- **`errors/`** — 9 exception classes, all `extends Exception` (checked), all `extends APIError`
- **`util/`** — `Pass2Key` (PBKDF2 + AES-GCM), `PEMConverter`, `Splitter`
- **`EncryptedRequest`** — wire format model with Gson `@SerializedName` annotations
@@ -26,6 +26,14 @@ mvn test -Dtest=ClassName # single test class
- `SecureMemory.unlock()` — always returns `false`
- `SecureMemory.initMemoryLocking()` — always returns `false`
+## Security — SecureBuffer Usage
+
+- **High security application** — all sensitive cryptographic material must use `SecureBuffer` with `try-with-resources`
+- Wrap AES key bytes, private RSA key bytes, IVs, nonces, and plaintext bytes in `SecureBuffer`
+- Pattern: `try (SecureBuffer buf = SecureMemory.secureByteArray(sensitiveBytes)) { ... }`
+- Never store raw `byte[]` for sensitive material on the heap longer than necessary
+- After encryption/decryption, zero and discard AES keys and plaintext immediately
+
## Dependencies
- **Gson** (2.13.2) — JSON serialization, in `pom.xml`
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..bde6ba7
--- /dev/null
+++ b/README.md
@@ -0,0 +1,395 @@
+# NOMYO Secure Java Chat Client
+
+**OpenAI-compatible secure chat client with end-to-end encryption for NOMYO Inference Endpoints**
+
+🔒 **All prompts and responses are automatically encrypted and decrypted**
+
+🔑 **Uses hybrid encryption (AES-256-GCM + RSA-OAEP with 4096-bit keys)**
+
+🔄 **Drop-in replacement for OpenAI's ChatCompletion API (Java)**
+
+## 🚀 Quick Start
+
+### 0. Try It Now (Demo Credentials)
+
+No account needed — use these public demo credentials to test immediately:
+
+| | |
+|---|---|
+| **API key** | `NOMYO_AI_E2EE_INFERENCE` |
+| **Model** | `Qwen/Qwen3-0.6B` |
+
+> **Note:** The demo endpoint uses a fixed 256-token context window and is intended for evaluation only.
+
+### 1. Installation
+
+via Maven (recommended):
+
+```xml
+
+ com.nomyo
+ nomyo-java
+ 1.0.0
+
+```
+
+via Gradle:
+
+```groovy
+implementation 'com.nomyo:nomyo-java:1.0.0'
+```
+
+### 2. Use the client (same API as OpenAI)
+
+```java
+import com.nomyo.client.SecureChatCompletion;
+import com.nomyo.client.Constants;
+import java.util.List;
+import java.util.Map;
+
+public class Main {
+ public static void main(String[] args) {
+ SecureChatCompletion secureChatCompletion = new SecureChatCompletion(
+ Constants.DEFAULT_BASE_URL,
+ "NOMYO_AI_E2EE_INFERENCE"
+ );
+
+ List