🏗️ Architect
High-performance network orchestration engine for protocol research & client emulation.
Move beyond the rigid defaults of standard libraries.
Architect gives you surgical control over TLS, HTTP/2, and TCP/IP — down to the byte.
✨ Why Architect?
Most HTTP clients are black boxes. You send a request; something happens on the wire; you get a response. Architect exposes everything in between.
By separating a clean Python API from a specialized Go sidecar, Architect lets you precisely control:
- 🔐 TLS fingerprints — spoof or study JA3/JA4 signatures with native uTLS
- 📡 HTTP/2 internals — frame ordering, header normalization, SETTINGS parameters
- 🌐 OS-level TCP stack — TTL, window size, and ECH for deep emulation fidelity
- 🍪 Session state — cookie-aware persistence + TLS session resumption
🔬 Capabilities
🚀 Technical Highlights
| Feature | Detail |
|---|---|
| ⚡ Zero-dependency core | Pre-compiled Go binaries ship with the package — no Go toolchain needed |
| 🔄 Async-first | Designed from the ground up for asyncio and high-scale concurrency |
| 🛠️ Full HTTP methods | GET POST PUT DELETE PATCH HEAD OPTIONS |
| 🔍 Deep visibility | Real-time engine logs expose every handshake, frame, and negotiation |
| 🔀 Flexible proxying | SOCKS5 & HTTP proxies with per-session isolated connection pools |
📦 Installation
pip install architect-net
Requirements: Python 3.10+
⚡ Quick Start
Session-based client emulation
import asyncio
import architect
async def main():
# Emulate a Chrome 124 network environment
session = architect.AsyncSession(architect.CHROME_124)
response = await session.get("https://tls.peet.ws/api/all")
if response.status_code == 200:
data = response.json()
print(f"✅ Verified JA3 Hash: {data['tls']['ja3_hash']}")
asyncio.run(main())
🧪 Custom Protocol Profiles
Define your own network fingerprint for granular testing and research:
import architect
RESEARCH_PROFILE = {
"ID": "custom_research_node",
"TLSID": 1, # Maps to an internal TLS profile
"TTL": 128, # Custom hop limit (128 = Windows)
"TCPWindow": 65535, # Initial TCP window size
"UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)..."
}
async def run_test():
# AsyncClient is stateless — no session/cookie persistence
client = architect.AsyncClient(profile=RESEARCH_PROFILE)
response = await client.get("https://tls.peet.ws/api/all")
print(response.json())
📋 Profile field reference
| Field | Type | Description |
|---|---|---|
ID |
str |
Human-readable identifier for this profile |
TLSID |
int |
Index into internal TLS client hello profiles |
TTL |
int |
IP time-to-live value (64 = Linux, 128 = Windows) |
TCPWindow |
int |
Initial TCP receive window size |
UserAgent |
str |
HTTP User-Agent header value |
🔄 AsyncSession vs AsyncClient
AsyncSession |
AsyncClient |
|
|---|---|---|
| Cookie persistence | ✅ Yes | ❌ No |
| TLS session resumption | ✅ Yes | ❌ No |
| Stateless requests | ❌ | ✅ Yes |
| Best for | Multi-request flows, login flows | One-off probes, benchmarking |
⚖️ Responsible Use
Architect is built for authorized security research, protocol analysis, and educational use. It exists to help engineers understand network behavior and build more resilient systems.
⚠️ Users are solely responsible for ensuring their use of this tool complies with all applicable laws and ethical standards. Do not use Architect against systems you do not own or have explicit permission to test.
🤝 Contributing
Contributions, issues, and feature requests are welcome! Check the issues page to get started.
Metadata
Release files for architect-net 1.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| architect_net-1.1.7.tar.gz | 17.0 MB | Without provenance | Details for architect_net-1.1.7.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| architect_net-1.1.7-py3-none-any.whl | Python 3 | none | any | Details for architect_net-1.1.7-py3-none-any.whl |
Total release size: 34.1 MB
Release files / architect_net-1.1.7.tar.gz
| Download URL | architect_net-1.1.7.tar.gz |
|---|---|
| Size | 17.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b77024dbfd7f9a4aaafc6e5b57063ce9c4d513373ad6c8fccd3d725f9ad751a6
|
|
BLAKE2b-256 checksum How to use checksums |
ea71af2bd712106d7f0889e583334eb60a226eb71e953dc64479ea61be51926a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / architect_net-1.1.7-py3-none-any.whl
| Download URL | architect_net-1.1.7-py3-none-any.whl |
|---|---|
| Size | 17.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
551d1543db027da91917c77b81c6ddca181fdb6786887c5909e75b965bad7062
|
|
BLAKE2b-256 checksum How to use checksums |
3b49405d7f3addf618e9a3b6d65dca43c3c42ba88ae0c7d49d30447ac85e379e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Security for architect-net 1.1.7
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.