A lightweight IRC (Internet Relay Chat) server and client implementation built with Go, featuring a terminal user interface (TUI) for the client.
- IRC Server: Full-featured IRC server implementation
- IRC Client: Terminal-based client with an intuitive interface
- Easy Setup: Simple configuration and startup process
- Cross-platform: Works on Linux, macOS, and Windows
- Go 1.24.3 or later
- Terminal that supports ANSI colors (for the best client experience)
go mod downloadCreate a .env file in the root directory to customize the server address:
echo "SERVER_ADDRESS=0.0.0.0:8800" > .envNote: If no .env file is provided, the server defaults to 0.0.0.0:8800 (localhost:8800).
Start the IRC server:
go run ./cmd/server/The server will start listening on the configured address (default: localhost:8800).
In a new terminal, start the IRC client:
go run ./cmd/client/Follow the on-screen instructions to:
- Connect to the server
- Join a chat room
- Start chatting!
- Start the server first using the command above
- Launch one or more clients to connect to the server
- Join rooms and start chatting with other connected users
- Use standard IRC commands within the client interface
glorp-irc/
├── cmd/
│ ├── client/ # Client application entry point
│ ├── server/ # Server application entry point
│ └── main.go # Main entry point
├── internal/
│ ├── client/ # Client implementation
│ └── server/ # Server implementation
├── releases/ # Release artifacts
├── .env # Environment configuration (optional)
├── go.mod # Go module dependencies
└── README.md # This file
This project uses several Go libraries including:
- Bubble Tea: For the terminal user interface
- Lip Gloss: For styling the TUI
- godotenv: For environment variable management
- Server:
go build -o server ./cmd/server/- Client
go build -o client ./cmd/client/(The client executables are also present in the releases directory, if you'd prefer to directly download them instead.)
go test ./...- Fork the repository
- Create a feature branch
- Make your changes
- Run tests
- Submit a pull request
This project is open source. Please check the repository for license details.
Note: The asterisk (*) in the project name indicates that the name was decided on a whim, and was meant to be a placeholder name, which is now never getting changed.