Tips and Tricks


What’s in this document?

The Fugue Tips and Tricks Guide showcases some helpful ways to make the most of your experience with Fugue. If you find a cool tip or trick, feel free to share it with us at

Fugue CLI Tips and Tricks

Force-kill a process

Occasionally, there may be a need to force-kill a process. This is handy if the process hangs in the Killing state, or if you’re just in a hurry. You can force-kill a process by suspending it and then killing it once it’s suspended, using this command:

$ fugue suspend -y <FID or alias> && fugue kill -y <FID or alias>

If you’re still having trouble killing a process, reach out to

Kill all processes at once

This line of bash will kill all currently running or suspended processes:

$ for fid in $(fugue status --json | jq -r .[].fid); do fugue kill -y $fid; done

Determine if an update is finished

Due to AWS’s eventual consistency, sometimes it can take a little while for an update to complete. If you want to see what infrastructure operations are still pending on an update, you can use this command:

$ fugue update <FID or alias> <composition> --dry-run

This returns a JSON document of the remaining AWS API requests. If all you see is the fid and job_id fields, then that means the update is complete and there are no pending operations. That’ll look like this:

    "fid": "e9abc2d2-a53e-4e1c-84f6-6455def4dbe1",
    "job_id": "1482426433"

For more information on dry-run output, see Using –dry-run To Preview Update Changes To Your Infrastructure.

Simplify dry-run output

Doing a dry-run on a composition or process is a great way to preview changes to your infrastructure. With particularly complicated compositions, though, it can be tricky to sift through all the JSON output. This one-liner will output a list of the AWS API requests that the Conductor would make if the command was run without dry-run, and it works with the run, update, resume, and kill commands.


$ fugue run <composition> --dry-run | jq '.requests | .[] | .request_type'


$ fugue update <FID or alias> <composition> --dry-run | jq '.requests | .[] | .request_type'


$ fugue resume <FID or alias> --dry-run | jq '.requests | .[] | .request_type'


$ fugue kill <FID or alias> --dry-run | jq '.requests | .[] | .request_type'

For example, you’d see the following output when dry-running a HelloWorld.lw run:


When all you want from a dry-run is a list of operations on your infrastructure, this is a simple solution.

Remove Existing RBAC Policy with a Blank Policy

In some instances rather than detaching your policy information with the fugue policy rbac-detach command, you may want to remove it entirely.

You can easily make these changes by creating an empty/blank policy and running fugue policy rbac-attach to apply the blank policy file. This will effectively return Fugue to its default state, e.g. a configuration with a single root user.

To start, if you run fugue policy list-users you can display a list of existing users and confirm the policy that’s applied.

$ fugue policy list-users

Fugue User list for bob/xxxxxxxxxx - Wed Jan 25 2017 2:47pm

User Id    Enabled    Created    Updated
---------  ---------  ---------  ---------
root       yes        2:15pm     2:15pm
bob        yes        4:30pm     4:30pm
fred       yes        4:30pm     4:30pm

To remove this policy and all of the associated users and user secrets simply use the fugue policy rbac-attach command with a blank policy file that contains the word composition to work as expected (e.g blankpolicy.lw).

$ cat blankpolicy.lw
$ fugue policy rbac-attach blankpolicy.lw
Compiling Ludwig file blankpolicy.lw ...
[ OK ] Successfully compiled. No errors.

Uploading policy to S3 ...
[ OK ] Successfully uploaded.

Requesting the Conductor set new policy ...
[ DONE ] Policy uploaded and applied.

Run the fugue policy list-users command to confirm your policy was updated and the data was removed.

$ fugue policy list-users

Fugue User list for bob/xxxxxxxxxxx - Wed Jan 25 2017 2:58pm

User Id    Enabled    Created    Updated
---------  ---------  ---------  ---------
root       yes        2:15pm     2:15pm

Some items to note:

  • Using fugue policy rbac-attach with a blank policy file will remove all non-root users and their corresponding user secrets.
  • You can create the same users by running fugue policy rbac-attach with a previously authored policy, however all user secrets will need to be regenerated with fugue policy generate-secret.
  • To remove an existing RBAC policy simply use the fugue policy rbac-detach command to detach the current policy. This method removes the policy but leaves any users and their corresponding user secrets intact.

Ludwig Tips and Tricks


Did you know that Fugue offers editor plug-ins so you can read and write Ludwig in your editor/IDE of choice? All plug-ins include Ludwig syntax highlighting, and some have additional features. See ludwig-mode for Emacs, ludwig-vim for vim, vscode-language-ludwig for VSCode, and language-ludwig for Atom.

Watch lwc for fast feedback

If you are working with Ludwig in an editor and on a platform with the watch command (available on OSX via Homebrew), you can get IDE-like fast feedback by running the following command in a separate pane or window on-screen:

watch -n2 -- lwc --composition FILE

A similar behavior can be achieved in bash without watch this way:

while true; do clear; lwc --composition FILE; sleep 2; done

Troubleshooting Tips and Tricks

Visit Troubleshooting for more information.