[KongchangAI]
· 3 min read· 1,531 words

Two Releases in 44 Minutes: Windows Forces RagLeap Core into an Emergency Fix

Two Releases in 44 Minutes: Windows Forces RagLeap Core into an Emergency Fix

RagLeap Core rushed v0.10.1 within 44 minutes over a Windows port conflict, showing both sides of small-team rapid iteration.

RagLeap Core v0.10.0 focused on security hardening — login rate limiting, a Setup status page, read-only agent skills, Ollama context raised to 8192. But 44 minutes later came v0.10.1, not for a critical vulnerability, but because a local PostgreSQL on Windows occupied port 5433 and froze the installer, revealing no real Windows validation before release. v0.10.1 made all ports configurable, added a key rotation command, auto-opened the browser in desktop environments, and fixed two subtle bugs. The developer openly listed five known limitations. Transparency is commendable, but early users bore the testing cost — building a systematic cross-platform validation process is the real key.

A self-hosted AI business operating system was forced to push out v0.10.1 just 44 minutes after releasing v0.10.0 — not because of some sophisticated security vulnerability, but because of an extremely mundane real-world problem: a local PostgreSQL instance on Windows had already claimed port 5433, and the installer froze outright.

The developer summed up the incident in one line: "This is the most honest bug report you'll ever see in the AI space."

RagLeap Core v0.10.1 release notes

v0.10.0: A Planned Security Hardening

The v0.10.0 release was itself a methodical hardening update, centered on stability, security, and operability:

  • Login rate limiting: 10 bad API keys within 5 minutes triggers a 15-minute 429 lockout, returning a Retry-After header. Proxy awareness via TRUSTED_PROXIES, disableable with AUTH_THROTTLE=off
  • Setup tab and GET /setup/status: Shows configured and missing items, never displays secrets, zero AI calls
  • Read-only skill for coding agents: Provides a manifest and a small client (health, employees, ask), designed so it cannot modify anything
  • Ollama context default raised to 8192: Long documents are no longer silently truncated
  • Installer enhancements: Disk space checks (4GB/14GB for local AI), rejection of duplicate Compose project names, reuse of an already-running Ollama instance, plus a new install.ps1 PowerShell installer script
  • Supply chain security: All third-party GitHub Actions pinned to specific commits

The core idea behind this release was clear — shift as many "problems discovered post-deployment" scenarios forward as possible.

429 and Retry-After in login rate limiting: Here, 429 refers to the HTTP status code "Too Many Requests," a standard response defined in RFC 6585, used to tell a client it has made too many requests within a given time window. The accompanying Retry-After response header instructs the client how many seconds to wait before retrying, preventing blind retries from piling more load on the server. RagLeap Core's strategy is 10 bad API keys within 5 minutes triggering a 15-minute lockout. Counting by failed credentials rather than total requests reduces collateral damage to legitimate users. The TRUSTED_PROXIES setting solves the real-IP problem in reverse proxy setups: if the app only sees the proxy's IP, rate limiting treats all users as a single source and inadvertently bans innocent ones.

BYOK (Bring Your Own Key): Refers to users supplying their own AI provider API keys, rather than the platform paying on their behalf or reselling model calls. This pattern is common in self-hosted AI products. The upside: users settle directly with providers, costs are transparent, and data doesn't pass through a middleman. The tradeoff: users must manage credentials across multiple providers themselves, and key rotation and leak risk shift to their side. RagLeap Core supports 19 providers plus local Ollama deployment, meaning it hands the decision of "which model vendor" entirely to the deployer.

v0.10.1: A Lesson in Windows Reality

The real story begins after v0.10.0 shipped. The developer tested on a real Windows environment (Docker Desktop) for the first time, only to find that a local PostgreSQL had already taken port 5433, and the installer stopped responding.

v0.10.1 completed the following fixes in 44 minutes:

All ports become configurable

Every port is now a setting: APP_PORT 8000, DB_PORT 5433, VOICE_PORT 8766, NEO4J 7475/7688, REDIS 6380. On a fresh install, if a port is occupied, the installer picks the next free port, writes it to .env, and uses it for dashboard links. Existing .env files are never modified.

Key rotation and browser experience

A new ragleap key --rotate command: generates a new random API key, writes it to .env, restarts only the application container, verifies the old key is rejected and the new one works, then prints the new link. The database is left completely untouched.

In desktop environments (Windows/Mac/Linux with a display, non-SSH connections), installation completion opens the browser straight to the dashboard, and the terminal no longer prints the key. Server, SSH, and CI environments still print the link. RAGLEAP_NO_BROWSER=1 forces printing unconditionally.

Two subtle bugs

  • The database existence check previously matched any Docker volume with the same name, even from unrelated installs. It now matches only the current install's volume
  • The API docs now explicitly state the x-api-key header is required (a 401 is expected behavior)

Docker Compose project names and port mapping mechanics: When Compose starts, it uses COMPOSE_PROJECT_NAME (defaulting to the directory name) as a namespace, prefixing containers, networks, and volumes to isolate different projects. If two installs land under the same-named project, volumes can be incorrectly reused — exactly the root cause of the "same-named Docker volume match" bug fixed in v0.10.1. On port mapping, settings like APP_PORT and DB_PORT correspond to the left side of the host:container mapping in the Compose file, i.e., the host port. The container-internal port usually stays the same, so changing only the host side avoids conflicts. Windows adds another layer of complexity: the system has reserved port ranges (dynamically claimed by Hyper-V/WinNAT), and even with no process listening, binding may still fail. A simple "is the port occupied" check isn't enough to cover every case.

Limitations the Developer Honestly Lists

What stands out is how this project lists its limitations in the release notes:

  • Tested on only one Windows machine with Docker Desktop, and Gemini/Ollama/skip menu all chose skip. Ollama on Windows is not yet tested
  • The one-liner irm ... | iex failed on that machine for unknown reasons. The two-step approach is recommended: $s = irm ...; iex $s
  • PATH hint output targets bash rather than PowerShell
  • Windows reserved port ranges are not covered by the port-occupancy check
  • During browser launch, the key is briefly visible in the process list

This kind of transparent "known unknowns" disclosure is rare in small-team projects.

irm ... | iex and PowerShell execution policy: irm is an alias for Invoke-RestMethod, and iex is Invoke-Expression. Combined, they amount to downloading a remote script and executing it directly, similar to curl | bash on Unix. Reasons the one-liner might fail include: the pipeline passing an object rather than a string, the script containing a UTF-8 BOM, ExecutionPolicy restrictions, or network-layer differences in handling redirects. The official two-step approach $s = irm ...; iex $s separates download from execution, fully obtaining the string before evaluating it, which avoids most pipeline semantics issues and makes it easier to inspect the downloaded content when something goes wrong. It's worth emphasizing that either way, feeding a remote script straight to an interpreter means fully trusting that domain — and this very command is a common entry point for supply chain attacks.

What Exactly Is RagLeap Core

For readers unfamiliar with it: RagLeap Core is a self-hosted AI business operating system, featuring 46 autonomous AI employees (9 core plus 37 vertical roles, such as recruiter, real estate agent, legal receptionist), using Graph RAG (Neo4j), supporting multi-channel access (WhatsApp/Telegram/Discord/voice), BYOK across 19 providers plus local Ollama deployment, under the MIT license.

Installation:

curl -fsSL https://ragleap.com/install.sh | bash

Windows:

$s = irm https://ragleap.com/install.ps1; iex $s

The GitHub repository currently has 18 stars, aiming for 20. The project is being built in public.

The Other Side of Moving Fast

The 44-minute double release has two readings from an engineering standpoint.

The optimistic side: an extremely short feedback loop, going from discovering the problem to a fix release in under an hour — nearly impossible in traditional software delivery. The project's release notes are also higher quality than comparable open source projects — no hidden defects, no vague limitations, no dodging the unknown.

The cautious side: v0.10.0 clearly shipped without any real Windows validation. Port conflicts are one of the most common problems Windows Docker users run into, and that's a basic scenario that should have been covered before release. The quick fix is commendable, but "ship first, test later" means early users effectively bear the testing cost.

For a project whose goal is to let non-technical users self-host an AI system, the reliability of the Windows path directly determines whether it can reach a broader audience. v0.10.1 is a necessary and correct remedy, but the more important question is whether a more systematic cross-platform validation process will be in place before the next release.

One-line Summary

RagLeap Core rushed out v0.10.1 within 44 minutes over a Windows port conflict, reflecting the two sides of small-team rapid iteration.

Paragraph Summary

RagLeap Core v0.10.0 focused on security hardening, adding login rate limiting, a Setup status page, read-only agent skills, and expanding Ollama context to 8192. But just 44 minutes after release, v0.10.1 followed — not due to a critical vulnerability, but because a local PostgreSQL on Windows occupied port 5433, freezing the installer. This exposed the lack of real Windows validation before release. v0.10.1 made all ports configurable, added a key rotation command, auto-opened the browser in desktop environments, and fixed two subtle bugs. The developer also proactively listed five known limitations in the release notes, including untested Ollama on Windows and a failing one-line install command. The article argues this transparency is commendable, but early users effectively bore the testing cost, and whether the next release establishes a systematic cross-platform validation process is the real key.

#RagLeap Core#Windows port conflict#self-hosted AI#Docker Compose#release notes#cross-platform testing#BYOK
Share:

Related articles