zxyvbr/kayak
44.1
Weak · 5 August 2026
2.2k
lines of production code
C#
primary language
5
measurements over time
What this system is
Kayak is a .NET-based HTTP server framework that provides a modular architecture for building networked applications. It manages TCP connections, HTTP transaction pipelines, and scheduling through a set of interface-based delegates, replacing older event-driven patterns. The system includes a command-line interface for launching the scheduler and tools for generating API documentation, supported by comprehensive test coverage for both networking and HTTP handling.
How it got here
2010 — Modular architecture and TCP networking
12 changes.
The project underwent a significant architectural reorganization, introducing a modular build system and separating TCP socket handling into a new Oars library. This period also saw the removal of legacy asynchronous stream abstractions in favor of a cleaner HTTP request/response model, accompanied by the addition of debugging utilities and documentation tools.
2011 — interface-based architecture and CLI tooling
11 changes.
The codebase underwent a significant architectural shift to replace C\# events with interface-based delegates across the HTTP server, networking layer, and socket implementations, improving robustness and testability. This refactoring was accompanied by the introduction of a new command-line interface for launching the scheduler and extensive test coverage for the new delegate-based components.
Features
Added KayakExamples project with HTTP server demo
Introduced a new KayakExamples project containing a complete HTTP server implementation. The example demonstrates how to use the Kayak framework by creating a scheduler, configuring an HTTP server to listen on port 8080, and handling requests via an IHttpRequestDelegate. It includes a configuration file for diagnostics and a Program.cs that showcases request routing, response generation, and body handling using the framework's data flow abstractions.
KayakExamples · high confidence
Added trace and debug stack trace utilities
A new Trace.cs file was added to the Kayak/Extensions directory, introducing a DebugStackTrace extension method for Exception objects and a Trace.Write method for formatted debug output. These utilities provide enhanced debugging capabilities by formatting exception stack traces and logging thread-specific information during development.
Kayak/Extensions · high confidence
HTTP request header extensions for 100-continue and body detection
Added extension methods to HttpRequestHead to determine if a client expects a 100-continue response and whether the request contains a body. The IsContinueExpected method checks for HTTP/1.1 with an 'expect: 100-continue' header, while HasBody checks for Content-Length or Transfer-Encoding headers.
Kayak/Http/Extensions · high confidence
Introduce Kayak CLI for launching and configuring the scheduler
Users can now start the Kayak scheduler from the command line. The new Kayak.Cli project provides a command-line interface that parses options (such as -g for a Gate configuration string and -b for a bind endpoint) and launches the scheduler. It supports a default delegate for basic startup/shutdown logging and allows loading custom IKayakDelegate implementations via configuration strings, enabling users to run the application with flexible configuration and error handling.
Kayak.Cli · high confidence
Introduced Kayak.Oars assembly for TCP socket handling
Added the new Kayak.Oars library containing core networking components, including the OarsServer for managing TCP connections, an OarsSocket implementation for socket I/O, an OarsBuffer for data management, and a Disposable utility class. This change establishes a dedicated assembly for TCP client and server functionality, separating it from the main HTTP handling code.
Kayak.Oars · high confidence
Introduced KayakDocs tool for generating assembly documentation
Added a new command-line tool, KayakDocs, which generates HTML documentation from .NET assemblies by reflecting on their types and members. The tool leverages a built-in MarkdownSharp processor to convert XML documentation comments into formatted HTML output, providing a structured view of public APIs, constructors, properties, methods, and fields.
tools · high confidence
Removals
Removal of legacy async/streaming abstractions (Coroutine, EntityStream, Request/ResponseStream)
The Kayak library has removed several legacy classes that previously handled asynchronous I/O and stream management. Specifically, the \Coroutine\ class (used for managing asynchronous enumeration blocks), \EntityStream\ (a wrapper for handling read-first/write-first stream logic), \RequestStream\ and \ResponseStream\ (which managed request/response bodies), and \NameValueDictionary\ (for header storage) have all been deleted. This change simplifies the API by removing the previous asynchronous streaming model in favor of a more direct, likely synchronous or simpler async, approach to handling HTTP requests and responses.
Kayak · high confidence
Removed obsolete test suite for request/response context handling
The KayakTests project has removed the test files for KayakContextRequest, KayakContextResponse, KayakServer, and the associated RequestStream/ResponseStream implementations, along with the SynchronousMemoryStream helper and Moq documentation. This reflects the removal of the legacy synchronous request/response stream API in favor of the new async/observable-based interface, rendering the old context and stream tests obsolete.
KayakTests · high confidence
Architecture
Build system and repository structure reorganization
The project's build and repository configuration has been restructured to support a modular architecture. A Git submodule for the HttpMachine library was added, and the solution file was updated to include the Kayak.Tests and KayakExamples projects while removing the Oars reference. Additionally, a Rake-based build script (Rakefile.rb) and MSBuild project file (build.proj) were introduced to automate building, testing, and NuGet package generation, while legacy Mercurial ignore files were removed.
(repo-wide) · high confidence
Behavioural changes
Added assembly metadata for KayakExamples
The KayakExamples project now includes an AssemblyInfo.cs file that defines standard assembly metadata, including the title, description, company, copyright, and version numbers (1.0.0.0) for the assembly.
KayakExamples/Properties · high confidence
Introduces new scheduler, server, and socket interfaces with delegate-based callbacks
The networking layer now relies on explicit interfaces (IScheduler, IServer, ISocket) and corresponding delegate interfaces (ISchedulerDelegate, IServerDelegate, ISocketDelegate) to handle events, replacing previous event-based or implicit patterns. This includes the new KayakScheduler and KayakServer static factories, allowing users to construct schedulers, servers, and sockets via the provided factory methods.
Kayak/Net · high confidence
Refactored KayakServer to use interface-based delegates and explicit scheduler dependency
The server implementation has been rewritten to replace C\# events with interface-based delegates (IServerDelegate), making the HTTP handling more robust. The DefaultKayakServer now requires an IScheduler and IServerDelegate in its constructor, enforcing explicit dependencies. Additionally, the server's internal state management has been extracted into a dedicated KayakServerState class to track listening, closing, and connection counts with thread-safe locking.
Kayak/Net/Server · high confidence
Refactored socket implementation with interface-based delegates
The socket layer has been rewritten to use interface-based delegates (ISocketDelegate) instead of C\# events, providing a more robust and testable architecture. This change introduces new internal components including KayakSocket, KayakSocketState, OutputBuffer, and a SocketWrapper abstraction that isolates the underlying System.Net.Sockets.Socket. The refactoring improves stability by properly handling exceptions from BeginReceive, deferring socket shutdown and close events until all data is written, and ensuring the RemoteEndPoint is correctly set.
Kayak/Net/Socket · high confidence
Rewrote HTTP server pipeline with interface-based delegates
The HTTP server implementation has been completely rewritten to use interface-based delegates (IHttpRequestDelegate, IHttpResponseDelegate) instead of C\# events, resulting in a more robust and testable transaction pipeline. This change introduces new types for handling HTTP requests and responses, including support for the 100-continue status code, proper handling of the X-Forwarded-For header, and improved socket management to prevent ObjectDisposedExceptions.
Kayak/Http · medium confidence
Updated HTTP machine submodule and libevent core library
The HTTP machine submodule has been updated to commit 5747f5e, and the libevent\_core.dylib symlink now points to libevent\_core.3.dylib, reflecting an update to the underlying networking and event handling libraries.
lib · medium confidence
Updated assembly metadata and version to 0.7.2
The Kayak assembly metadata has been updated to version 0.7.2, with the description and copyright information refined. Additionally, the assembly is now configured to expose internal types to the Kayak.Tests project, facilitating internal testing.
Kayak/Properties · high confidence
Test coverage
Added HTTP transaction test suite; Added network and scheduler test coverage; Added test helper classes for network delegates; Added unit tests for CLI argument parsing and launcher behavior; Expanded test coverage for HTTP transaction handling and parser transforms; Updated test assembly metadata.
Dependencies
Updated build system and test dependencies
The project files have been updated to target the .NET Framework 4.0 and use MSBuild ToolsVersion 4.0. The test projects (Kayak.Cli.Tests, Kayak.Tests) now reference NUnit version 2.5.10.11092 via packages.config, and the main Kayak project includes the httpmachine library as a submodule. Additionally, the KayakTests project has been renamed to KayakExamples and its dependencies have been cleaned up.
(dependencies) · medium confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 47 → 44 (-3.4)
- Rubric changed (rubric-2026.08.18 → rubric-2026.08.19) — scores are not directly comparable.
Lenses
- Code Health 78 → 78 (+0.0)
- Architecture 87 → 87 (+0.0)
- Maturity 32 → 25 (-7.2)
- Readiness 38 → 38 (+0.0)
- Security 100 → 100 (+0.0)
Findings
- No change — the same findings as the prior survey.
Architecture
- Unchanged — 1 containers · 0 contexts · 0 edges
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
zxyvbr/kayak was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 5 August 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 892843d901c6e946179f9878df7efa3c2c746b5f — the exact code this score is about.
- Scored under rubric-2026.08.19 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer latest.