$ $
curl -s https://cpynet.com/install.sh -o install.sh && bash -n install.sh && . install.shSHA256 de install.sh: 86bd4b2171ea3f0e8e845df8585e69a3d452eb94855bbab7dd097c8af9b96887
# cpynet installer - fetches the cpy/pst shell functions from https://cpynet.com/alias,
# adds a source line to your shell's rc file (once, never duplicated), and
# loads them into this session right now.
#
# Dot-sourced (". install.sh"), not run as a subprocess - that's what makes
# cpy/pst usable immediately in this terminal, not just in new ones.
CPYNET_RC=~/.bashrc
[ -n "$ZSH_VERSION" ] && CPYNET_RC=~/.zshrc
if curl -s https://cpynet.com/alias -o ~/.cpy.sh && bash -n ~/.cpy.sh; then
grep -qxF 'source ~/.cpy.sh' "$CPYNET_RC" || echo 'source ~/.cpy.sh' >> "$CPYNET_RC"
. ~/.cpy.sh
echo "cpynet installed - cpy and pst are ready"
else
echo "install failed, try again"
fi
unset CPYNET_RC
SHA256 del script que descarga install.sh (~/.cpy.sh): 8161c889a7240a3958267ffdb1697cff311246b5c4aaf57c02d44aa1d397a17e
cpy() {
local password="" ttl="" reads="" e2e="" a
for a in "$@"; do case "$a" in
-password=*) password="${a#-password=}" ;;
-ttl=*) ttl="${a#-ttl=}" ;;
-reads=*) reads="${a#-reads=}" ;;
-e) e2e=1 ;;
esac; done
local qs=""
[ -n "$ttl" ] && qs="ttl=$ttl"
[ -n "$reads" ] && qs="${qs:+$qs&}reads=$reads"
local target="https://llmtag.com/"
[ -n "$qs" ] && target="https://llmtag.com/?$qs"
local input key=""
if [ -n "$e2e" ]; then
key=$(openssl rand -base64 24)
input=$(openssl enc -aes-256-cbc -pbkdf2 -salt -a -A -pass "pass:$key") || return 1
else
input=$(cat)
fi
local url
if [ -n "$password" ]; then
url=$(printf '%s' "$input" | curl -sS --fail-with-body -L -H "X-Password: $password" --data-binary @- "$target") || return 1
else
url=$(printf '%s' "$input" | curl -sS --fail-with-body -L --data-binary @- "$target") || return 1
fi
local bare="${url%%\?*}"
echo "${bare##*/}"
echo "curl \"$url\""
if [ -n "$key" ]; then
echo "key (share separately, never with the link/code): $key"
fi
}
pst() {
local password="" id="" key="" a
for a in "$@"; do case "$a" in
-password=*) password="${a#-password=}" ;;
-key=*) key="${a#-key=}" ;;
*) id="$a" ;;
esac; done
if [ -z "$id" ]; then echo "usage: pst <code> [-password=xxx] [-key=xxx]" >&2; return 1; fi
local target="https://llmtag.com/$id"
[ -n "$password" ] && target="$target?p=$password"
local text
text=$(curl -sS --fail-with-body "$target") || return 1
if [ -n "$key" ]; then
text=$(printf '%s' "$text" | openssl enc -d -aes-256-cbc -pbkdf2 -a -A -pass "pass:$key") || { echo "decrypt failed - wrong key?" >&2; return 1; }
fi
printf '%s\n' "$text"
if command -v pbcopy >/dev/null 2>&1; then printf '%s' "$text" | pbcopy
elif command -v wl-copy >/dev/null 2>&1; then printf '%s' "$text" | wl-copy
elif command -v xclip >/dev/null 2>&1; then printf '%s' "$text" | xclip -selection clipboard
elif command -v xsel >/dev/null 2>&1; then printf '%s' "$text" | xsel --clipboard
elif command -v clip.exe >/dev/null 2>&1; then printf '%s' "$text" | clip.exe
fi
}
Después solo: comando | cpy — imprime el código de 6 dígitos y un comando curl listo para usar en dos líneas. Para protegerlo con contraseña: comando | cpy -password=xxx. Para leer: pst 123456 — imprime el contenido en stdout y también lo copia al portapapeles si encuentra la forma (pbcopy/wl-copy/xclip/xsel/clip.exe).
Los enlaces se generan en el dominio corto https://llmtag.com; el comando de instalación de arriba se descarga del sitio principal, https://cpynet.com - es el mismo servicio, solo un dominio corto independiente reservado para los enlaces.
Invoke-RestMethod https://cpynet.com/install.ps1 -OutFile install.ps1; . .\install.ps1SHA256 de install.ps1: 0ab2333a4ea86b1b8797c2b8251daa368d485dfeaa6dfcaad90c076d0217b43c
# cpynet installer - fetches the cpy/pst PowerShell functions from
# https://cpynet.com/alias.ps1, adds a dot-source line to $PROFILE (once, never duplicated),
# and loads them into this session right now.
#
# Dot-sourced (". .\install.ps1"), not run as a subprocess - that's what
# makes cpy/pst usable immediately in this session, not just in new ones.
$ErrorActionPreference = 'Stop'
try {
Invoke-RestMethod https://cpynet.com/alias.ps1 -OutFile "$HOME/.cpy.ps1"
if (-not (Test-Path $PROFILE)) { New-Item -ItemType File -Path $PROFILE -Force | Out-Null }
if (-not (Select-String -Path $PROFILE -Pattern '\.cpy\.ps1' -Quiet -ErrorAction SilentlyContinue)) {
Add-Content $PROFILE "`n. `"$HOME/.cpy.ps1`""
}
. "$HOME/.cpy.ps1"
Write-Output "cpynet installed - cpy and pst are ready"
} catch {
Write-Output "install failed, try again"
}
SHA256 del script que descarga install.ps1 (~/.cpy.ps1): 356ae02c39d58c86d717899969cf961e519eac156105140671c63941b9b5aa17
function cpy {
[CmdletBinding()]
param(
[Parameter(ValueFromPipeline = $true)]
[string[]]$InputObject,
[string]$Password = "",
[string]$Ttl = "",
[string]$Reads = ""
)
begin { $lines = New-Object System.Collections.Generic.List[string] }
process { if ($null -ne $InputObject) { foreach ($l in $InputObject) { $lines.Add($l) } } }
end {
$text = $lines -join "`n"
$qs = @()
if ($Ttl) { $qs += "ttl=$Ttl" }
if ($Reads) { $qs += "reads=$Reads" }
$target = "https://llmtag.com/"
if ($qs.Count -gt 0) { $target = "https://llmtag.com/?" + ($qs -join '&') }
$headers = @{}
if ($Password) { $headers["X-Password"] = $Password }
try {
$url = (Invoke-RestMethod -Uri $target -Method Post -Body $text -Headers $headers -ContentType "text/plain; charset=utf-8").Trim()
} catch {
Write-Error $_
return
}
$bare = $url -replace '\?.*$', ''
$code = $bare -replace '.*/', ''
Write-Output $code
Write-Output "curl `"$url`""
}
}
function pst {
[CmdletBinding()]
param(
[Parameter(Position = 0)]
[string]$Code = "",
[string]$Password = ""
)
if (-not $Code) { Write-Error "usage: pst <code> [-Password xxx]"; return }
$target = "https://llmtag.com/$Code"
if ($Password) { $target = "$target`?p=$Password" }
try {
$text = Invoke-RestMethod -Uri $target -Method Get
} catch {
Write-Error $_
return
}
Write-Output $text
if (Get-Command Set-Clipboard -ErrorAction SilentlyContinue) {
$text | Set-Clipboard
}
}
Esto añade las funciones cpy/pst a $PROFILE una vez - después, "texto" | cpy y pst 123456 funcionan igual que en la versión bash (los parámetros usan el propio estilo de PowerShell: cpy -Ttl 1h -Reads 3 -Password xxx, pst 123456 -Password xxx).


1. Escribe tu texto
Pega tu texto o código en la pestaña de escritura y pulsa enviar.


2. Comparte el código, el enlace o el QR
Al enviarlo se genera un código de 6 dígitos, un comando curl listo para usar y un código QR escaneable.


3. Introduce el código
En la pestaña de lectura, introduce el código — o escanea el código QR con el móvil.


4. Se lee una vez y desaparece
El contenido aparece al instante y se elimina permanentemente del servidor — el mismo código no volverá a funcionar.
comando | curl --data-binary @- https://llmtag.com/La respuesta es un enlace listo para usar.
curl "tu-enlace"Se lee una vez y luego se elimina permanentemente. ¿Tienes el alias instalado? pst 123456.
Rellena el campo de contraseña de abajo — el enlace incluirá automáticamente ?p=contraseña.
Invoke-RestMethod -Method Post -Body "texto" -Uri https://llmtag.com/Invoke-RestMethod "tu-enlace"También funciona el Invoke-RestMethod integrado, en lugar de curl.exe.
Añade Accept: application/json a la petición de creación para recibir {"code","url","expires_at"} en lugar de texto plano - más fácil de procesar en un script. Referencia completa, incluyendo códigos de estado (400/401/404/413/429/503) y un ejemplo de GitHub Actions: /api.
Solo una vez. Se elimina permanentemente del servidor en el instante en que se lee.
Aunque nadie lo lea, el paste se elimina automáticamente - no queda ningún rastro en el servidor.
CPYNET nunca toca el portapapeles - todo se mueve mediante curl desde la terminal, así que un portapapeles desactivado no supone ningún problema.
El texto solo se mantiene en memoria, nunca se escribe en disco - se elimina permanentemente en el momento en que se lee o se agota el tiempo. Si está protegido con contraseña, se guarda cifrado con AES-256-GCM.
Sí - en PowerShell, escribe curl.exe en lugar del alias curl, si no, los textos largos pueden truncarse en la consola. O usa el Invoke-RestMethod integrado, o instala las funciones cpy/pst con la sección de Windows / PowerShell de arriba.
Hasta 2 MB, un código de 6 dígitos, se autoelimina en 2min por defecto - seleccionable hasta 1d (el parámetro ?ttl=, o el selector de TTL en la pestaña de escritura). Se elimina tras 1 lectura por defecto - seleccionable hasta 10 lecturas (el parámetro ?reads=, o el selector de lecturas).
Creado para entornos donde compartir el portapapeles no es una opción: servidores remotos por SSH, máquinas donde el acceso al portapapeles está bloqueado por política, o máquinas/contenedores/escritorios virtuales independientes sin portapapeles compartido entre ellos. CPYNET nunca toca el portapapeles del sistema operativo - todo se mueve como texto plano a través de curl - así que se puede usar con confianza incluso donde el portapapeles está completamente desactivado.
Extensiones de archivo permitidas: .txt, .log, .csv, .json, .md, .pdf, .doc, .docx, .rtf, .xml, .yaml, .yml, .pem, .crt, .key, .conf, .cfg, .env, .ini, .toml
El servidor nunca ejecuta, evalúa ni canaliza lo que pegas hacia un shell - solo lo almacena y lo devuelve exactamente como lo recibió. Sin dependencias de terceros (biblioteca estándar de Go pura), sin acceso al sistema de archivos con datos del usuario, sin peticiones salientes.
El icono del escudo (🔒) en la pestaña de escritura, o cpy -e desde una terminal, es una capa distinta de la contraseña anterior: con una contraseña, el servidor descifra brevemente el propio texto para comprobarlo; aquí, el cifrado ocurre por completo de tu lado - el servidor nunca ve nada más que texto cifrado.
⚠️ Aviso: esto no elimina el riesgo de canalizar algo hacia un shell (curl ... | bash) sin revisarlo antes - ese es un riesgo universal para cualquier herramienta de compartición, no específico de esta. Nunca ejecutes un comando que no hayas inspeccionado desde una fuente en la que no confíes.
Tamaño máximo: 2 MB · Código: 6 dígitos · Borrado automático: 2min por defecto, seleccionable hasta 1d · Lecturas: 1 por defecto, hasta 10
CPYNET v1.0 — un solo archivo, un solo binario de Go — sin base de datos externa ni dependencias.