diff --git a/plugins/tmux/README.md b/plugins/tmux/README.md
index 0f8473da..b4516ef2 100644
--- a/plugins/tmux/README.md
+++ b/plugins/tmux/README.md
@@ -25,6 +25,7 @@ The plugin also supports the following:
 | `tkss`     | tmux kill-session -t       | Terminate named running tmux session                     |
 | `tmux`     | `_zsh_tmux_plugin_run`     | Start a new tmux session                                 |
 | `tmuxconf` | `$EDITOR $ZSH_TMUX_CONFIG` | Open .tmux.conf file with an editor                      |
+| `tds`      | `_tmux_directory_session`  | Creates or attaches to a session for the current path    |
 
 ## Configuration Variables
 
diff --git a/plugins/tmux/tmux.plugin.zsh b/plugins/tmux/tmux.plugin.zsh
index 6ed91c44..72cdd481 100644
--- a/plugins/tmux/tmux.plugin.zsh
+++ b/plugins/tmux/tmux.plugin.zsh
@@ -108,6 +108,19 @@ compdef _tmux _zsh_tmux_plugin_run
 # Alias tmux to our wrapper function.
 alias tmux=_zsh_tmux_plugin_run
 
+function _tmux_directory_session() {
+  # current directory without leading path
+  local dir=${PWD##*/}
+  # md5 hash for the full working directory path
+  local md5=$(printf '%s' "$PWD" | md5sum | cut -d  ' ' -f 1)
+  # human friendly unique session name for this directory
+  local session_name="${dir}-${md5:0:6}"
+  # create or attach to the session
+  tmux new -As "$session_name"
+}
+
+alias tds=_tmux_directory_session
+
 # Autostart if not already in tmux and enabled.
 if [[ -z "$TMUX" && "$ZSH_TMUX_AUTOSTART" == "true" && -z "$INSIDE_EMACS" && -z "$EMACS" && -z "$VIM" && -z "$INTELLIJ_ENVIRONMENT_READER" ]]; then
   # Actually don't autostart if we already did and multiple autostarts are disabled.