Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 92 additions & 0 deletions LICENSE.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
License text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved.
"Business Source License" is a trademark of MariaDB Corporation Ab.

Parameters

Licensor: HashiCorp, Inc.
Licensed Work: Terraform Version 1.6.0 or later. The Licensed Work is (c) 2024
HashiCorp, Inc.
Additional Use Grant: You may make production use of the Licensed Work, provided
Your use does not include offering the Licensed Work to third
parties on a hosted or embedded basis in order to compete with
HashiCorp's paid version(s) of the Licensed Work. For purposes
of this license:

A "competitive offering" is a Product that is offered to third
parties on a paid basis, including through paid support
arrangements, that significantly overlaps with the capabilities
of HashiCorp's paid version(s) of the Licensed Work. If Your
Product is not a competitive offering when You first make it
generally available, it will not become a competitive offering
later due to HashiCorp releasing a new version of the Licensed
Work with additional capabilities. In addition, Products that
are not provided on a paid basis are not competitive.

"Product" means software that is offered to end users to manage
in their own environments or offered as a service on a hosted
basis.

"Embedded" means including the source code or executable code
from the Licensed Work in a competitive offering. "Embedded"
also means packaging the competitive offering in such a way
that the Licensed Work must be accessed or downloaded for the
competitive offering to operate.

Hosting or using the Licensed Work(s) for internal purposes
within an organization is not considered a competitive
offering. HashiCorp considers your organization to include all
of your affiliates under common control.

For binding interpretive guidance on using HashiCorp products
under the Business Source License, please visit our FAQ.
(https://www.hashicorp.com/license-faq)
Change Date: Four years from the date the Licensed Work is published.
Change License: MPL 2.0

For information about alternative licensing arrangements for the Licensed Work,
please contact licensing@hashicorp.com.

Notice

Business Source License 1.1

Terms

The Licensor hereby grants you the right to copy, modify, create derivative
works, redistribute, and make non-production use of the Licensed Work. The
Licensor may make an Additional Use Grant, above, permitting limited production use.

Effective on the Change Date, or the fourth anniversary of the first publicly
available distribution of a specific version of the Licensed Work under this
License, whichever comes first, the Licensor hereby grants you rights under
the terms of the Change License, and the rights granted in the paragraph
above terminate.

If your use of the Licensed Work does not comply with the requirements
currently in effect as described in this License, you must purchase a
commercial license from the Licensor, its affiliated entities, or authorized
resellers, or you must refrain from using the Licensed Work.

All copies of the original and modified Licensed Work, and derivative works
of the Licensed Work, are subject to this License. This License applies
separately for each version of the Licensed Work and the Change Date may vary
for each version of the Licensed Work released by Licensor.

You must conspicuously display this License on each original or modified copy
of the Licensed Work. If you receive the Licensed Work in original or
modified form from a third party, the terms and conditions set forth in this
License apply to your use of that work.

Any use of the Licensed Work in violation of this License will automatically
terminate your rights under this License for the current and all other
versions of the Licensed Work.

This License does not grant you any right in any trademark or logo of
Licensor or its affiliates (provided that you may use a trademark or logo of
Licensor as expressly required by this License).

TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON
AN "AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,
EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND
TITLE.
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,16 @@ Coder Registry is a community-driven platform for extending your Coder workspace

## Overview

Coder is built on HashiCorp's open-source Terraform language to provide developers an easy, declarative way to define the infrastructure for their remote development environments. Coder-flavored versions of Terraform allow you to mix in reusable Terraform snippets to add integrations with other popular development tools, such as JetBrains, Cursor, or Visual Studio Code.
Coder is built on HashiCorp's open-source Terraform language to provide developers an easy, declarative way to define the infrastructure for their remote development environments. Coder-flavored versions of Terraform allow you to mix in reusable Terraform snippets to add integrations with other popular development tools, such as **JetBrains**, **Cursor**, or **Visual Studio Code**.

Simply add the correct import snippet, along with any data dependencies, and your workspace can start using the new functionality immediately.

![Coder Agent Bar](./images/coder-agent-bar.png)
!

More information [about Coder Modules can be found here](https://coder.com/docs/admin/templates/extending-templates/modules), while more information [about Coder Templates can be found here](https://coder.com/docs/admin/templates/creating-templates).

---

## Getting started

The easiest way to discover new modules and templates is by visiting [the official Coder Registry website](https://registry.coder.com/). The website is a full mirror of the Coder Registry repo, and it is where .tar versions of the various resources can be downloaded from, for use within your Coder deployment.
Expand All @@ -31,6 +33,8 @@ To get started with a module, navigate to that module's page in either the regis

- [The Cursor repo directory](https://github.com/coder/registry/tree/main/registry/coder/modules/cursor)
- [The Cursor module page on the main website](https://registry.coder.com/modules/cursor)
- **[The Windows RDP Keep-Alive module directory (youngthug38)](https://github.com/coder/registry/tree/main/registry/youngthug38/modules/windows-rdp-keepalive)**
- **[The Windows RDP Keep-Alive module page on the main website](https://registry.coder.com/modules/youngthug38/windows-rdp-keepalive)**

In both cases, the main README contains a Terraform snippet for integrating the module into your workspace. The snippet for Cursor looks like this:

Expand Down
1 change: 1 addition & 0 deletions bun.lock
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"lockfileVersion": 1,
"configVersion": 0,
"workspaces": {
"": {
"name": "registry",
Expand Down
25 changes: 25 additions & 0 deletions modules/youngthug38/windows-rdp-keepalive/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Windows RDP Keep Alive Module

**Status:** Beta (Tested on Windows Server)

This module adds a background process designed to keep Windows Coder workspaces active during RDP sessions.

When an RDP session is active, the Coder agent may trigger an inactivity shutdown based on low CPU/network use. This module prevents shutdown by injecting a background PowerShell loop (`coder_script`).

The script monitors commands (`query user` or similar) to detect active RDP sessions (`rdp-tcp` in `Active` state). When detected, it generates standard output to simulate activity, resetting the Coder agent's idleness timer.

## Variables

| Name | Description | Default |
| ---------- | ------------------------------------------------- | ------- |
| `interval` | Interval in seconds to check for RDP connections. | `60` |

## Usage Example

```hcl
module "windows_rdp_keepalive" {
source = "[https://registry.coder.com/modules/windows-rdp-keepalive](https://registry.coder.com/modules/windows-rdp-keepalive)"
agent_id = coder_agent.main.id
interval = 300 # Check every 5 minutes
}
```
28 changes: 28 additions & 0 deletions modules/youngthug38/windows-rdp-keepalive/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
script = <<EOT
$Interval = ${var.interval}

Write-Host "Starting RDP Keep Alive Monitor..."

while ($true) {
# Check for active RDP-Tcp sessions using qwinsta (Standard on Windows Server)
$sessionInfo = qwinsta | Select-String "rdp-tcp"
$isActive = $sessionInfo | Select-String "Active"

if ($isActive) {
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
Write-Host "[$timestamp] Active RDP Session Detected."

# Hit the Coder Agent API to verify activity
# The agent listens on localhost and accepts POST /api/v2/workspace/activity
try {
$url = "$env:CODER_AGENT_URL/api/v2/workspace/activity"
Invoke-RestMethod -Uri $url -Method Post -ContentType "application/json" -Body '{}' -ErrorAction SilentlyContinue
Write-Host " -> Heartbeat sent to Coder Agent."
} catch {
Write-Host " -> Failed to send heartbeat: $_"
}
}

Start-Sleep -Seconds $Interval
}
EOT
Binary file added terraform.exe
Binary file not shown.