diff --git a/WEEK-8/rshlib.h b/WEEK-8/rshlib.h
new file mode 100644
index 0000000000000000000000000000000000000000..ac888343cbbe9c547f112b3fd04c5077564d3e5f
--- /dev/null
+++ b/WEEK-8/rshlib.h
@@ -0,0 +1,67 @@
+#ifndef __RSHLIB_H__
+#define __RSHLIB_H__
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+
+#define RDSH_DEF_PORT           1234        // Default port
+#define RDSH_DEF_SVR_INTFACE    "0.0.0.0"   // Default server binds to all interfaces
+#define RDSH_DEF_CLI_CONNECT    "127.0.0.1" // Default client connects to localhost
+#define OK 0
+
+
+#define RDSH_COMM_BUFF_SZ       1024
+#define STOP_SERVER_SC          200  // Signal for stopping the server
+
+
+static const char RDSH_EOF_CHAR = 0x04;    
+
+
+#define ERR_RDSH_COMMUNICATION  -50     
+#define ERR_RDSH_SERVER         -51     
+#define ERR_RDSH_CLIENT         -52     
+#define ERR_RDSH_CMD_EXEC       -53     
+#define ERR_RDSH_CMD_PARSE      -3
+#define WARN_RDSH_NOT_IMPL      -99     
+
+#define MAX_ARGS 10
+
+
+typedef struct {
+    char *argv[MAX_ARGS]; 
+} command_t;
+
+typedef struct {
+    command_t commands[10]; 
+    int command_count;      
+} command_list_t;
+
+// ✅ Enum for built-in commands
+typedef enum {
+    BI_NOT_BI = 0,
+    BI_CMD_EXIT,
+    BI_CMD_STOP_SVR,
+    BI_CMD_CD
+} Built_In_Cmds;
+
+
+int start_client(char *server_ip, int port);
+int exec_remote_cmd_loop(char *address, int port);
+int client_cleanup(int cli_socket, char *cmd_buff, char *rsp_buff, int rc);
+int start_server(char *ifaces, int port, int is_threaded);
+int boot_server(char *ifaces, int port);
+int process_cli_requests(int svr_socket);
+int exec_client_requests(int cli_socket);
+int rsh_execute_pipeline(int cli_sock, command_list_t *clist);
+int send_message_eof(int cli_socket);
+int stop_server(int svr_socket);
+int build_cmd_list(char *cmd, command_list_t *clist);
+
+
+Built_In_Cmds rsh_match_command(const char *input);
+int exec_builtin_command(Built_In_Cmds cmd_type, char *arg);
+
+#endif  // __RSHLIB_H__