Skip to content
Merged
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
7 changes: 7 additions & 0 deletions .playwright-mcp/console-2026-09-05T11-45-08-455Z.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[26994805ms] Uncaught (in promise) TypeError: this.commitBySessionCache is not a function
at _commitBySession (https://res-access.dwservice.net/app/framework/29/mod_ui_datasource.js:0:9424)
at commit (https://res-access.dwservice.net/app/framework/29/mod_ui_datasource.js:0:11090)
at eval (:7:9)
at _fire_callback (https://access.dwservice.net/app/framework/29/core.js:0:43398)
at <anonymous> (https://access.dwservice.net/app/framework/29/core.js:0:43703)
at <anonymous> (https://access.dwservice.net/app/framework/29/core.js:0:16839)
66 changes: 66 additions & 0 deletions .playwright-mcp/page-2026-09-05T19-13-08-913Z.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
- generic [ref=f1e3]:
- generic [ref=f1e4]:
- generic [ref=f1e7] [cursor=pointer]
- generic [ref=f1e9]:
- generic [active] [ref=f1e100] [cursor=pointer]: Agenti
- generic [ref=f1e329] [cursor=pointer]: Gruppi
- generic [ref=f1e11]:
- generic [ref=f1e12]:
- generic [ref=f1e13] [cursor=pointer]
- generic [ref=f1e14] [cursor=pointer]: "3"
- generic [ref=f1e16] [cursor=pointer]
- generic [ref=f1e104]:
- generic [ref=f1e106]:
- generic [ref=f1e107]: Agenti
- generic [ref=f1e111]:
- generic [ref=f1e112]: Tutti
- generic [ref=f1e114]: Disponibile
- generic [ref=f1e116]: Non disponibile
- generic [ref=f1e118]: Da installare
- generic [ref=f1e120]: Disabilitato
- generic [ref=f1e123]:
- generic [ref=f1e124]:
- generic [ref=f1e125] [cursor=pointer]
- generic [ref=f1e127] [cursor=pointer]
- generic [ref=f1e129]:
- generic: Cerca
- textbox [ref=f1e130]
- generic [ref=f1e131]:
- generic: Gruppo
- textbox [ref=f1e132]
- generic [ref=f1e133] [cursor=pointer]
- generic [ref=f1e136]:
- generic [ref=f1e138]:
- generic [ref=f1e139]:
- generic [ref=f1e140]: BoxRally Acer 1
- generic [ref=f1e150] [cursor=pointer]
- generic [ref=f1e158]: Non disponibile
- generic [ref=f1e164]:
- generic [ref=f1e165]:
- generic [ref=f1e166]: BoxRally Acer 2
- generic [ref=f1e176] [cursor=pointer]
- generic [ref=f1e184]: Non disponibile
- generic [ref=f1e190]:
- generic [ref=f1e191]:
- generic [ref=f1e192]: Chromebox
- generic [ref=f1e202] [cursor=pointer]
- generic [ref=f1e210]: Non disponibile
- generic [ref=f1e216]:
- generic [ref=f1e217]:
- generic [ref=f1e218]: Fisso Poscante
- generic [ref=f1e228] [cursor=pointer]
- generic [ref=f1e236]: Non disponibile
- generic [ref=f1e242]:
- generic [ref=f1e243] [cursor=pointer]: GHE
- generic [ref=f1e255] [cursor=pointer]
- generic [ref=f1e262]: Disponibile
- generic [ref=f1e268]:
- generic [ref=f1e269]:
- generic [ref=f1e270]: Legion
- generic [ref=f1e280] [cursor=pointer]
- generic [ref=f1e288]: Non disponibile
- generic [ref=f1e294]:
- generic [ref=f1e295]:
- generic [ref=f1e296]: Lenovo
- generic [ref=f1e306] [cursor=pointer]
- generic [ref=f1e314]: Non disponibile
66 changes: 66 additions & 0 deletions .playwright-mcp/page-2026-09-05T19-13-43-045Z.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
- generic [ref=f1e3]:
- generic [ref=f1e4]:
- generic [ref=f1e7] [cursor=pointer]
- generic [ref=f1e9]:
- generic [ref=f1e100] [cursor=pointer]: Agenti
- generic [ref=f1e329] [cursor=pointer]: Gruppi
- generic [ref=f1e11]:
- generic [ref=f1e12]:
- generic [ref=f1e13] [cursor=pointer]
- generic [ref=f1e14] [cursor=pointer]: "3"
- generic [ref=f1e16] [cursor=pointer]
- generic [ref=f1e104]:
- generic [ref=f1e106]:
- generic [ref=f1e107]: Agenti
- generic [ref=f1e111]:
- generic [ref=f1e112]: Tutti
- generic [ref=f1e114]: Disponibile
- generic [ref=f1e116]: Non disponibile
- generic [ref=f1e118]: Da installare
- generic [ref=f1e120]: Disabilitato
- generic [ref=f1e123]:
- generic [ref=f1e124]:
- generic [active] [ref=f1e125] [cursor=pointer]
- generic [ref=f1e127] [cursor=pointer]
- generic [ref=f1e129]:
- generic: Cerca
- textbox [ref=f1e130]
- generic [ref=f1e131]:
- generic: Gruppo
- textbox [ref=f1e132]
- generic [ref=f1e133] [cursor=pointer]
- generic [ref=f1e136]:
- generic [ref=f1e138]:
- generic [ref=f1e139]:
- generic [ref=f1e140]: BoxRally Acer 1
- generic [ref=f1e150] [cursor=pointer]
- generic [ref=f1e158]: Non disponibile
- generic [ref=f1e164]:
- generic [ref=f1e165]:
- generic [ref=f1e166]: BoxRally Acer 2
- generic [ref=f1e176] [cursor=pointer]
- generic [ref=f1e184]: Non disponibile
- generic [ref=f1e190]:
- generic [ref=f1e191]:
- generic [ref=f1e192]: Chromebox
- generic [ref=f1e202] [cursor=pointer]
- generic [ref=f1e210]: Non disponibile
- generic [ref=f1e216]:
- generic [ref=f1e217]:
- generic [ref=f1e218]: Fisso Poscante
- generic [ref=f1e228] [cursor=pointer]
- generic [ref=f1e236]: Non disponibile
- generic [ref=f1e242]:
- generic [ref=f1e243] [cursor=pointer]: GHE
- generic [ref=f1e255] [cursor=pointer]
- generic [ref=f1e262]: Disponibile
- generic [ref=f1e268]:
- generic [ref=f1e269]:
- generic [ref=f1e270]: Legion
- generic [ref=f1e280] [cursor=pointer]
- generic [ref=f1e288]: Non disponibile
- generic [ref=f1e294]:
- generic [ref=f1e295]:
- generic [ref=f1e296]: Lenovo
- generic [ref=f1e306] [cursor=pointer]
- generic [ref=f1e314]: Non disponibile
39 changes: 39 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,11 @@ the session without any of this. To supply a code non-interactively, see
| `dwshell put [-r] <local> <agent>:<remote>` | Upload a file (or directory with `-r`). |
| `dwshell rm [-r] <agent>:<path> [...]` | Remove remote file(s) (directories with `-r`). |
| `dwshell sync [flags] <src> <dst>` | One-way sync (size+mtime or `--checksum`); one side is `agent:path`. |
| `dwshell agent create <name>` | Register a new agent and print its installation code. |
| `dwshell agent code <agent>` | Print the code of an agent still awaiting installation. |
| `dwshell agent reinstall <agent>` | Mint a fresh code, invalidating the current one. |
| `dwshell agent rm <agent>` | Delete an agent from the account. |
| `dwshell agent group <agent> <group>` | Move an agent into a group (`--none` to remove it). |
| `dwshell version` | Print the version and exit. |
| `dwshell help` | Show usage. |

Expand Down Expand Up @@ -208,6 +213,40 @@ address the same directory, and an omitted path means the root. On Windows `/` i
the root and lists the drives; address a drive as `agent:/C:/dir` or `agent:C:/dir`
(`/` and `\` are interchangeable, and a bare `agent:C:` means the drive root).

### Creating agents

`dwshell agent create` registers a machine on your account and prints the code
that binds an installation to it:

```sh
$ dwshell agent create web-01
Agent "web-01" created.

Installation code: 281-407-902

Download the agent on the target machine and enter this code when the installer
asks for it:
https://www.dwservice.net/download.html
```

The code is then read back with `dwshell agent code web-01` for as long as the
machine has not been installed — `dwshell list` shows such an agent as
`pending`. `dwshell agent reinstall` mints a new one and invalidates the old.

Deleting an agent and regenerating a code both ask for confirmation, and refuse
outright when there is no terminal unless you pass `--yes`, so a script cannot
remove a machine by accident. Every subcommand takes `--json`.

Groups have to exist already: `dwshell agent group web-01 prod` fails and lists
the groups you do have rather than creating one from a typo. These commands work
only on agents you own — a share is someone else's agent, and is refused.

**Installing is still a manual step.** dwshell does not download the installer:
the download page is where the licence is accepted. The agent's unattended mode
(`-silent`) is not documented here either, because the service refuses to serve
it — an install attempted that way answers *"Silent installation forbidden.
Please contact the support."*

#### Agent name vs subcommand

`dwshell <agent>` is a convenience shortcut: the first argument is treated as an
Expand Down
Loading