Skip to content

opsdeck 0.3.0

Choose a tag to compare

@github-actions github-actions released this 25 Oct 09:15

The agent works like a coding harness — web access, subagents, hooks, background tasks,
canary rollouts and headless runs — and the workbench manages domains and DNS at
Cloudflare and ArvanCloud and TLS certificates from Let's Encrypt; FortiGate and AnyConnect
VPNs that ask for one-time codes or a group now connect.

Agent

  • Web access — web_search (DuckDuckGo without a key, or SearXNG, Brave, Tavily),
    web_fetch (pages as Markdown, in parts; GitHub files as raw) and software_lookup
    (end-of-life dates from endoflife.date, known vulnerabilities from OSV.dev, GitHub releases).
    Only public addresses are reached — every redirect and resolved IP is checked, so a page
    cannot point the agent at opsdeck, this computer, the local network or cloud metadata.
    Sites outside the allowed list (documentation sites built in, plus your own) ask once;
    pages are marked untrusted and the next change after web content asks, in every mode; a
    query that names a workspace address asks first. App settings → Web access sets the
    default, the search backend and a proxy; a workspace can lower it or route the web through
    one of its VPNs, and a workspace that allows only local models has it off.
  • Workspace APIs, metrics and logs — http_request calls the API of a panel (Grafana,
    Alertmanager, Harbor, Proxmox, an admin API…) through its VPN or jump host with its vault
    login or token; writes ask like other changes. New resource kinds Prometheus, Loki
    and Elasticsearch/OpenSearch with metrics_query (PromQL, ranges drawn as a chart,
    alerts, targets) and logs_query (LogQL or a query string, lines coloured by level).
  • dns tool — the agent reads and changes the DNS records of the workspace's domains
    through the connected Cloudflare or ArvanCloud account (it never sees the token): zones,
    records, set (create or change one record; the approval card shows the zone-file line
    before and after, values left out are kept) and delete (destructive; needs an unambiguous
    record). Offered only when the workspace has a Domain; results come with a records table.
  • certificate tool — the agent lists the workspace's certificates (issued, expiry,
    due), shows one, issues or renews it (the ACME flow with its log as the result) and deploys
    chain and key to a host from the vault without seeing the key, then reloads with exec.
  • Subagents — delegate hands work to an investigator (read-only; several run in
    parallel), a deployer (changes with the usual approvals) or the workspace's own
    agents/*.md, each with its own context and optionally a cheaper model. Their steps,
    calls and approvals show inside the call.
  • Hooks — commands before and after tool calls and at the end of a turn, with the event
    as JSON on stdin: block a call (exit 2), make it ask, keep an audit log, post to a chat.
    In App settings and per workspace; workspace hooks run only after you trust them here.
  • Background tasks — exec and local_exec can run a command in the background; the
    session is told when it ends or prints a matching line, and an idle session picks it up by
    itself. tasks lists, reads, waits for and stops them; so does the session header.
  • Canary rollouts — a change over several hosts can run on one host first; a second card
    then asks to continue on the rest or stop.
  • Waiting, asking, planning — wait_for (port, URL, command output, Kubernetes rollout)
    instead of sleep loops; ask_user asks a multiple-choice question in the chat; todo keeps
    a live checklist above the message box.
  • Sessions — fork a session (or from one of your messages, to edit and resend it), export
    it as a report, runbook or skill, !command (or !@host command) to run something
    yourself, and slash commands: the built-in ones and the workspace's own prompt templates in
    commands/*.md.
  • Headless runs — opsdeck run -p "…" --ws acme for cron and CI, with text, JSON or
    streamed JSON output; anything that would ask is denied.
  • Model policy — a workspace can limit its sessions to some models (e.g. ollama/*).
  • Faster, leaner loop — the reads of one step run in parallel; a long output is kept in
    full and read in parts with read_output instead of being cut; tools are offered only
    when the workspace has what they work on.
  • The chat — tool results come with views: charts, log lines, search results, the page
    read, HTTP status, end-of-life tables and vulnerabilities, with the text the agent got one
    click away.

Workbench

  • Domains and DNS — Connectors → DNS & CDN connects a Cloudflare or ArvanCloud
    account with an API token (checked against the provider, stored in the vault; an API URL
    and a proxy under Advanced for networks where the provider is not reachable directly).
    A new Domains page per workspace: add a zone by picking it from the account (a Domain
    resource that holds only the zone and, optionally, the connector), see its status, plan,
    name servers (and whether the registrar still points elsewhere), and its records in one
    shape whatever the provider — type, name relative to the zone, content, TTL, priority,
    proxied through the CDN, comment — with filters, an editor with hints per type, and
    deletion that asks (the full name must be typed on a protected environment). ArvanCloud's
    balanced A records and lowercase types, Cloudflare's SRV/CAA data and automatic TTL are
    handled. Every record change is in the activity journal — see docs/dns.md.
  • TLS certificates — a new Certificates page and Certificate resource: domains
    (wildcards included), the CA (Let's Encrypt, its staging, Buypass, or any ACME directory),
    contact email, key type, when to renew. Issue runs the dns-01 challenge through the DNS
    connectors (TXT records created, checked on the zone's name servers, removed afterwards)
    with a live log, and stores the chain and key in the vault (vault://<ws>/cert-<name>,
    with readable expiry and fingerprint fields). The page shows what is valid, due or expired
    and why; Deploy writes the files to a host over SFTP (key 0600; nginx, Apache and HAProxy
    layouts) and can reload the service; Renew automatically renews due certificates while
    opsdeck runs unlocked. All audited — see docs/certificates.md.
  • One-time VPN codes by SMS or email — FortiGate VPNs (OpenConnect or openfortivpn)
    that send a code for every login now connect: opsdeck logs in itself and, when the gateway
    asks for the code, shows a prompt on any page (and on the VPN page) with the gateway's
    message; Persian digits are fine. A TOTP secret on the login answers it by itself, and so
    can your phone: forward the gateway's SMS to an ntfy topic (App settings → One-time VPN
    codes, with a test) or let a local command print the code. A tunnel that drops connects
    again with the same session, without a new code, while the gateway keeps it. The agent
    asks you for the code instead of failing. Untrusted FortiGate certificates now show the
    pin to set before anything else runs.
  • AnyConnect groups and second factors — Cisco ASA/FTD gateways (and the other
    openconnect gateways) that ask for a GROUP or a code after the password now connect,
    also those with the old /+webvpn+/ login: opsdeck answers openconnect's questions itself.
    The group comes from the profile, or you pick it from the gateway's list in the same prompt
    as codes; a second password or challenge (Answer:, Response:) gets the login's TOTP
    code, or the code you enter or forward from your phone, and is asked for again when wrong.
    The TOTP secret is no longer on openconnect's command line (nor in the VPN log).

Install

System Download
Windows 10/11 (x64) opsdeck-0.3.0-windows-x64-setup.exe (or the portable .exe)
macOS 12+ (Apple silicon and Intel) opsdeck-0.3.0-macos-universal.dmg
Debian / Ubuntu (x86_64) opsdeck_0.3.0_amd64.deb
Fedora / RHEL / openSUSE (x86_64) opsdeck-0.3.0-1.x86_64.rpm
CLI only (opsdeck serve, opens in the browser) opsdeck-cli-0.3.0-<os>-<arch>

Or run the install script — see Install.
Already installed? opsdeck shows the update in its sidebar and installs it for you.