The goal of this project is to provide a simple PICK-like multivalue database implementation useful for personal projects that is done entirely through vibe-coding.
This is not only a personal project/tool, but a proof of concept and an exploration of the usefulness of AI agents as someone who sees value in the use of AI, but struggles to believe claims from companies and influencers that say they no longer write or read production level code.
To that end, this is being developed in Rust, which is a language I'd like to learn, have spent 2 hours following introductory tutorials for, but otherwise have no experience or knowledge of. The goal is that I will be able to understand the code enough to know when refactoring or other changes to code may be appropriate, but that I do not know if the solutions implemented are necessarily correct or efficient down to the line.
With its natural support for safety and embedded unit testing, Rust seemed like the perfect choice for the project.
For development I am using Jetbrains RustRover with their Junie agent. So far, the primary model used has been the default in Junie, Gemini 3 Flash.
I am taking a deliberately naive approach to development, doing little to no research on exactly how data is managed or stored in general for a database, or within PICK systems. I am making no attempt to handle hashtable management, group size, or modulus until the time comes that it is necessary (as it was for QM, D3, etc.). I want to see how agentic AI can handle this, and what the cost of refactor/implementation will be through the discovery process.
SmartRustyPick is a CLI tool for interacting with a MultiValue-inspired database. It supports hierarchical data organization through Accounts, data records with multiple fields, values and sub-values, dictionary definitions for field formatting, and complex select operations.
- Account-level Organization: Multiple accounts can exist within a single system, providing data isolation.
- Hierarchical Records: Support for Field Mark (FM), Value Mark (VM), and Sub-Value Mark (SVM).
- Dictionary Support: Define field indices, display headers, justifications, column widths, and formatting/conversions (Dates, Numbers).
- Active Select Lists: Perform queries and refine them through sequential
SELECTcommands. - Remote Access: TCP SSL server with certificate authentication and CRUD protocol.
- Persistent Configuration: Customize your environment (e.g., preferred editor, SSL certificates, server address).
- Headless Mode: Run the database as a background service without a CLI.
- Smart Login: Automatic CLI account login based on the current working directory.
- MCP Server Support: Integrated Model Context Protocol (MCP) server for database interaction by other AI agents.
For more information, see the following documentation:
- Data Structures - Learn how records and dictionaries are structured.
- Commands - Learn about application modes and command categories.
- Administration Commands - System management and security.
- General Use Commands - Data operations and queries.
- Remote Protocol - Details on the TCP/SSL remote protocol.
- MCP Server - Usage instructions for the Model Context Protocol server.
- AI Agents - Documentation on the role and contributions of AI agents in this project.
The application can be configured via a config.toml file in the root directory.
Currently supported settings:
editor: The command to launch for theEDITcommand (default:nano).server_port: The default port for the SSL server (default: 8443).server_addr: The address the server should bind to (default:127.0.0.1).cert_path: Path to the server SSL certificate.key_path: Path to the server SSL private key.ca_path: Path to the CA certificate for client authentication.
If SSL certificate paths are provided in config.toml, the database service will automatically start in the background
when the CLI is launched.
- Compile the workspace with
cargo build --release. - Run tests with
make test-unitormake test-all. - Run test coverage with
make test-coverage(requirescargo-llvm-cov). - Run the interactive "full stack" experience (CLI + background server):
make runorcargo run -p smart-rusty-pick-cli.- The CLI will automatically log into an account if the current directory is associated with one.
- The database server will start in the background if SSL certificates are configured in
config.toml.
- Run specifically as a headless database service:
make run-server.- Requires SSL settings in
config.toml.
- Requires SSL settings in
- Type
HELPin the CLI to see all commands.
The project is organized into a Rust workspace with the following crates:
crates/core: The core database engine and library.crates/cli: The interactive command-line interface.crates/server: The dedicated headless server entry point.
This project includes a Model Context Protocol (MCP) server located in the mcp/ directory. This allows other AI agents
to interact with the database using standardized tools.
- Setup the environment:
make mcp-setup - Run the server:
make mcp-run
For detailed configuration and tool descriptions, see mcp/README.md.